首页 > 解决方案 > 从 MacOS Swift 应用程序以 sudo 身份启动进程

问题描述

我对使用 Apple 很陌生,更不用说为他们开发应用程序了,而是想创建一个简单的应用程序来学习一点点语言。

我正在尝试在应用程序中打开文件,但该应用程序需要以管理员权限打开。我已经测试了在命令中运行以通过运行以下命令来证明该概念有效:

sudo open /private/etc/apache2/extra/httpd-vhosts.conf -a TextEdit

正如预期的那样,在终端中要求输入密码,然后打开带有可编辑文件的应用程序。

然后我尝试执行以下 Swift 来做同样的事情:

let fileToOpen : String = txtFileToOpen.stringValue;
let task = Process();
task.launchPath = "/usr/bin/env"
        
task.arguments = ["sudo", "open", fileToOpen, "-a", "TextEdit"];
task.launch();

我期待因为我在应用程序而不是终端中运行上述内容,所以我会得到 Apple 对话框,询问我的管理员密码以授予从我的应用程序运行上述内容的权限,但不幸的是,这不起作用,而是我得到错误:

env:sudo:不允许操作

有没有办法可以执行上述操作并提示管理员密码以允许我的进程从我的应用程序运行?

标签: swiftmacossudo

解决方案


推荐阅读