如何以 root 身份 运行 macOS 应用程序并使用系统调用?

How to run a macOS app as root and use system calls?

我正在尝试从我的 macOS 应用程序 (objective-c) 运行 setpriority 命令。它从来没有用过,我假设这是因为应用程序没有 运行 作为 root 用户。

Xcode 版本 9.2 (9C40b)

非常感谢任何帮助,谢谢!

不建议 运行 macOS 上的 GUI 应用程序以 root 身份运行。相反,您应该将应用程序中需要 root 访问权限的部分分解到一个单独的帮助工具中,使用 SMJobBless() 函数以 root 身份启动该工具,然后使用 XPC 与该工具通信。

Apple 提供了 EvenBetterAuthorizationSample 示例代码以提供一个非常好的基本框架。

编辑:我不久前决定制作自己的授权示例项目,它应该比古老的 EvenBetterAuthorizationSample 更容易使用。您可以在 CSAuthSample.

查看

您想 运行 为 root,还是 运行 为 sudo?这是有区别的。 运行 绝对不推荐使用 root,系统会出现奇怪的行为。

您写道:

I've tried opening the app with sudo

应该可以。你怎么试过?您需要在 .app 包中调用二进制文件。 运行 open 对捆绑包不起作用。

例如

sudo ./Xcode.app/Contents/MacOS/Xcode