swift - 如何以管理员权限运行命令

标签 swift macos command-line

我想实现一个简单的 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: 操作不允许

我只是想以某种方式提供用户的密码或询问 native 密码? 有什么想法吗?

最佳答案

我找到了解决方案,保持代码不变,命令应采用以下格式:

"osascript -e 'do shell script \"my command\" with administrator privileges'"

我之前尝试过使用它,但我必须像上面那样加上引号和单引号!

此时,苹果的 native 警报正在呈现。

关于swift - 如何以管理员权限运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56361942/

相关文章:

ios - DJI iOS SDK (Swift) - 当iPhone通过USB连接Mavic Remote 时,App无法连接飞行器

ios - 在两个 CGPoint 之间创建弧线并沿其获取 CGPoints

swift - NSTableView - 更改 GroupRow 样式

python - 无法在 El Capitan (10.11) 中安装 Pip 包

macos - Mac 上 ~/bin 与/usr/local/bin 的区别

php exec 与 phing 的内存使用情况

ios - 如何在嵌套的 Realm 列表中创建新对象?父对象应保持不变,但必须将其 "holds"添加到列表中

macos - 似乎并不是我的所有 HTML 页面都在某些浏览器中加载

php - 写入tmp文件夹

ios - 使用 Xcode 的命令行构建工具存档 (xcodebuild archive)