CFP参考/ Library / Preferences

时间:2012-02-26 16:45:29

标签: objective-c c cocoa core-foundation cfpreferences

我在系统偏好设置(使用授权锁定)中使用了prefpane。我需要将我的偏好写入/Library/Preferences。但是,每当我尝试将prefs同步到kCFPreferencesAnyUserkCFPreferencesCurrentHost时,即使我的锁已解锁,它也会失败。有没有办法在不创建帮助应用程序的情况下将我的首选项写入/Library/Preferences?我想避免这种情况,因为它是多余的。

  

请注意,修改“任何用户”首选项需要root权限(或Mac OS X v10.6之前的管理员权限) - 查看Authorization Services Programming Guide.

我阅读了授权服务编程指南,它甚至没有提到偏好。

1 个答案:

答案 0 :(得分:1)

CFPreferences使用您的进程的euid来确定“当前用户”的含义。您可以将您的euid设置为0,但这确实不推荐,因为这意味着您的整个程序现在可能是特权升级攻击的来源,如果它包含漏洞,而不仅仅是一个微小的目的特定帮手。这对你的用户不利,而且对你不利。

此外,XPC和seteuid()并不总是很好玩,而CFPreferences使用XPC。我相信,从euid 0切换到非0应该可行,但我不会指望另一个方向工作。