从MacOS Swift应用程序以sudo的身份启动流程

从MacOS Swift应用程序以sudo的身份启动流程,swift,macos,sudo,Swift,Macos,Sudo,我对使用苹果非常陌生,更不用说为他们开发一个应用了,但是我想创建一个简单的应用来学习一点苹果语言 我正在尝试在应用程序中打开文件,但该应用程序需要以管理员权限打开。我已经测试了在命令中运行,通过运行以下命令来证明该概念的有效性: sudo open /private/etc/apache2/extra/httpd-vhosts.conf -a TextEdit 这将按预期要求在终端中输入密码,然后打开带有可编辑文件的应用程序 然后,我尝试使用以下Swift来做同样的事情: let fileTo

我对使用苹果非常陌生,更不用说为他们开发一个应用了,但是我想创建一个简单的应用来学习一点苹果语言

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

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();
我本来以为,因为我正在应用程序中运行上述内容,而不是终端,所以我会得到苹果对话框,要求输入我的管理员密码,以允许上述内容从我的应用程序中运行,但不幸的是,这不起作用,相反,我得到了错误:

环境:sudo:不允许操作


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

实际上,打开文件不需要管理员权限,另一方面,如果应用程序是沙盒,则无法使用提升的权限运行操作。如果您希望能够编辑文件,可以这样做。该文件是写保护的,没有像sudo那样打开,这是一个巨大的痛苦,必须在终端中找到该文件,然后从终端sudo打开它。我不知道我的应用程序是否是沙盒,这是默认设置还是什么?你没有提到要写入文件。在最新版本的Xcode中,默认情况下启用沙盒。但是,即使没有沙盒容器,获得root权限也不是一件小事。你必须安装一个特权助手。是的,很抱歉我忘了提到我使用sudo使文件可编辑。我将查看特权助手“我的应用”是提交到Mac app Store的桌面应用程序还是供个人使用的应用程序?