CFP参考/ Library / Preferences

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

请注意,要修改“任何用户”首选项,需要root权限(或Mac OS X v10.6之前的管理员权限) – 请参阅“ 授权服务编程指南”。

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

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

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