3

在 Objective-C/Cocoa中运行类似$sudo touch folder_name或从内部运行的正确方法是什么?$sudo rm我正在更改和移动一些文件,并且需要提升权限。任何代码示例将不胜感激。谢谢。

4

2 回答 2

12

一种方法是AuthorizationExecuteWithPrivileges(),但这对于正常的事情是不鼓励的。我收集主要是为安装人员准备的。

就像是:

AuthorizationRef auth = NULL;
OSStatus err = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagInteractionAllowed, &auth);
err = AuthorizationExecuteWithPrivileges(auth, command, kAuthorizationFlagDefaults, args, NULL);

并添加适当的检查err...

请参阅授权文档。

于 2010-01-23T00:58:50.223 回答
2

有几种方法可以做到这一点。你选择哪一个取决于你想做什么。最简单和最不安全的方法是在一个额外的帮助工具上简单地设置 s 位,您可以从代码中调用该工具并执行需要管理员权限的操作。查看BetterAuthorizationSample,了解执行特权代码的最奇特和最复杂的方式。

授权服务编程指南为您提供所需的一切。

于 2010-01-23T01:42:37.807 回答