在Cocoa和Objective-C中使用sudo命令?

时间:2010-01-23 00:34:35

标签: objective-c cocoa macos privileges sudo

在Objective-C / Cocoa中运行$sudo touch folder_name$sudo rm之类的正确方法是什么?我正在改变并移动几个文件,需要提升权限。任何代码示例将不胜感激。感谢。

2 个答案:

答案 0 :(得分:11)

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

类似的东西:

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

并添加err ...

的相应检查

请参阅Authorization文档。

答案 1 :(得分:2)

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

Authorization Services Programming Guide为您提供所需的一切。