首页 > 解决方案 > 如何以管理员权限运行命令

问题描述

我想实现一个简单的 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

我只是想以某种方式提供用户的密码或询问它本机?有任何想法吗?

标签: swiftmacoscommand-line

解决方案


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

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

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

随之而来的是苹果的原生警报。


推荐阅读