使用root权限启动/分配macOS应用程序

时间:2017-12-27 16:37:43

标签: xcode root sudo nsapplescript

我使用XCode 9.2编写了一个macOS Cocoa应用程序。

应用程序的目的是作为一组shell命令的包装器,以便用户可以根据需要轻松地运行命令。 shell脚本允许用户控制由另一方编写软件的特定设备驱动程序。

我设法让应用程序以root身份调用shell命令。

但是有一些子命令失败了。实际运行的命令是,我认为它是第二个“ y1 y2 y3 y4 x1 1 1 1 1 x2 0 1 1 1 x3 1 0 0 0 x4 0 1 0 0 ”失败:

stop -a

当我在终端中运行相同的命令时,它们可以作为离散命令或在shell脚本中运行。

作为最后的手段,我使用

从命令行运行应用程序
do shell script \"
cd '/Library/Application Support/ABC' ;
 python '/Library/Application Support/ABC/abc.py' stop -d;
 python  '/Library/Application Support/ABC/abc.py' stop -a;
 python '/Library/Application Support/ABC/abc.py' stop -g;
 python '/Library/Application Support/ABC/abc.py' stop -t;\"
 with administrator privileges

这完美无缺。

因此,似乎当我使用NSAppleScript框架运行时,它正确地提示我输入root密码,但仍然存在导致命令失败的错误。但是当整个应用程序在sudo ~/Library/Developer/Xcode/DerivedData/appname/Build/Products/Debug/appname.app/Contents/MacOS/appname 下运行时,一切正常。

所以解决方案似乎是将应用程序设置为需要Root privs。是否有可以为构建项目设置的设置,该设置会自动设置此设置,以便在启动时请求root密码?

1 个答案:

答案 0 :(得分:0)

似乎正在努力,我没有得到错误,但仍然想要一些关于如何设置应用程序以管理员身份运行的指示。