5

我正在尝试从 ~/Library/PreferencePanes 文件夹中删除一个文件,而这无法通过普通权限完成。通常,如果您需要从 ~/Library 文件夹中删除任何文件,系统会询问您的用户名和密码。

我目前的做法是

[[NSFileManager defaultManager] removeItemAtPath:filePath error:&error]

但这继续返回错误([error localizedDescription]):

theAppName.prefPane couldn’t be removed because you don’t have permission to access it.

为了获得删除文件所需的这些提升权限,我需要使用什么逻辑和代码?

谢谢!

4

2 回答 2

5

您应该阅读授权服务编程指南。您将需要使用AuthorizationExecuteWithPrivileges.

于 2011-06-07T15:51:55.527 回答
1

我能找到并且对我有用的唯一方法是在 Xcode 中创建一个命令行工具。使用 SMJOBBLES 将该工具安装为 Launchd Job,然后使用 XPC 连接与其对话。按照下面的 EvenBetterAuthorization 示例来了解上述所有工作的原理。

https://developer.apple.com/library/mac/samplecode/EvenBetterAuthorizationSample/Listings/Read_Me_About_EvenBetterAuthorizationSample_txt.html#//apple_ref/doc/uid/DTS40013768-Read_Me_About_EvenBetterAuthorizationSample_txt-DontLinkElementID_17

于 2015-07-30T01:09:36.047 回答