【发布时间】:2017-12-27 16:37:42
【问题描述】:
我使用 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 密码?
【问题讨论】:
标签: xcode root sudo nsapplescript