我在系统首选项中使用了一个预窗格(带有授权锁)。我需要得到我的首选项来写到/Library/Preferences。但是,每当我尝试将prefs同步到kCFPreferencesAnyUser和kCFPreferencesCurrentHost时,即使我的锁被解锁,它也会失败。有没有办法在不创建助手应用程序的情况下将我的首选项写入/Library/Preferences?我想避免这样做,因为这是多余的。
注意,要修改“任意用户”首选项,需要根权限(或MacOSXv10.6之前的管理权限)-see
我阅读了授权服务编程指南,它甚至没有提到首选项。
发布于 2013-01-21 07:20:53
CFPreferences使用进程的euid来确定“当前用户”的含义。您可能会将euid设置为0,但实际上不建议这样做,因为这意味着如果整个程序包含漏洞,而不仅仅是一个特定于特定目的的小助手,那么整个程序现在可能是权限升级攻击的来源。这对您的用户是有害的,而且对您也是有害的。
而且,XPC和seteuid()并不总是友好,CFPreferences使用XPC。我相信,从euid 0切换到非0应该有效,但我不会指望另一个方向工作。
https://stackoverflow.com/questions/9454957
复制相似问题