swift - 如何以管理员权限运行命令
问题描述
我想实现一个简单的 mac 应用程序,它将以管理员权限运行一些命令。我所做的是下面的代码
func execute(command: String) -> String {
var arguments:[String] = []
arguments.append("-c")
arguments.append(command)
let task = Process()
task.launchPath = "/bin/sh"
task.arguments = arguments
let pipe = Pipe()
task.standardOutput = pipe
task.standardError = pipe
task.launch()
task.waitUntilExit()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
return String(data: data, encoding: .utf8)!
}
这适用于没有 的命令sudo
,当我将 sudo 放在命令的开头时,我收到此错误/bin/sh: /usr/bin/sudo: Operation not permitted
我只是想以某种方式提供用户的密码或询问它本机?有任何想法吗?
解决方案
我找到了解决方案,保持代码不变,命令应采用以下格式:
"osascript -e 'do shell script \"my command\" with administrator privileges'"
我之前尝试过使用它,但我不得不像上面那样加上引号和单引号!
随之而来的是苹果的原生警报。
推荐阅读
- file - Linux - 1973 年没有权限和时间戳的文件;如何?
- sql - 从每日百分位值计算每月百分位值
- push-notification - 当用户发送大文本时,我们没有收到推送通知。
- azure - 无法使用 U-SQL 读取 Excel 文件
- angular - 在 Angular 6 中交换组件的更好方法
- c# - 实体框架迁移从头开始创建所有表
- google-app-engine - GC Cloud Build 通过内部 IP 访问 Compute Engine
- python - Python - 删除子文件夹(仅删除子文件夹而不删除其他文件)
- c# - Bot-framework v4.0:如何获取用户的时区
- android - 如何在 android 的 DatePicker 中将默认语言环境设置为英语?