objective-c - CFP 引用/库/首选项

标签 objective-c c cocoa core-foundation cfpreferences

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

Note that to modify “Any User” preferences requires root privileges (or Admin privileges prior to Mac OS X v10.6)—see Authorization Services Programming Guide.

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

最佳答案

CFPreferences 使用进程的 euid 来确定“当前用户”的含义。您可以将 euid 设置为 0,但确实不建议这样做,因为这意味着如果您的整个程序包含漏洞,而不仅仅是一个微小的特定用途,那么它现在可能成为权限升级攻击的来源 helper 。这对您的用户不利,进而对您也不利。

此外,XPC 和 seteuid() 并不总是能很好地发挥作用,并且 CFPreferences 使用 XPC。我相信,从 euid 0 切换到非 0 应该可行,但我不会指望其他方向有效。

关于objective-c - CFP 引用/库/首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9454957/

相关文章:

c - 使用 Inet_aton 接受命令行参数错误

iphone - boolean 值没有在正确的时刻设置

iphone - 添加事件未显示在 iPhone 日历中

objective-c - Objective C 泛型 - 条件编译

c - 具有包含 char * 的结构类型的 out 参数的公共(public) API 设计

objective-c - 按比例缩放和旋转 NSImage 的 drawInRect

iphone - popToRootViewController动画问题

c - 按位 float 到整数

objective-c - 在 Objective c 中就地调用函数

objective-c - 有没有办法检查是否获得了 NSLock?