我使用 XCode 9.2 编写了一个 macOS Cocoa 应用程序。
该应用程序的目的是作为一组 shell 命令的包装器,以便用户可以根据需要轻松运行命令。shell 脚本允许用户控制由另一方编写软件的特定设备驱动程序。
我已经设法让应用程序以 root 身份调用 shell 命令。
但是有一些子命令会失败。实际运行的命令是,我认为第二个“ stop -a
”失败了:
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
当我在终端中运行相同的命令时,它们可以作为离散命令或在 shell 脚本中工作。
作为最后的手段,我使用命令行从命令行运行应用程序
sudo ~/Library/Developer/Xcode/DerivedData/appname/Build/Products/Debug/appname.app/Contents/MacOS/appname
这非常有效。
因此,似乎当我使用正确提示我输入 root 密码的 NSAppleScript 框架运行时,仍然存在导致命令失败的问题。但是当整个应用程序在sudo
一切正常的情况下运行时。
因此,解决方案似乎是将应用程序设置为需要 Root 权限。是否可以为构建的项目设置一个设置,该设置会自动设置为在启动时请求 root 密码?