我正在为所有用户在全球范围内存储一些首选项的应用程序工作。它通过kCFPreferencesAnyUser
in作为CFPreferencesSetValue
的userName
参数。如何在OS X Lion中编写“所有用户”首选项?
在OS X版本10.7(狮子)之前,这工作得很好。但是,当此代码在Lion上运行时,即使从管理员帐户运行应用程序,调用也会失败。 CFPreferencesSetValue
的文档声明:
请注意,如果您拥有管理员权限,则只能保存“任何用户”的首选项。
...我看到搜索周围所需的权限雪豹和狮子之间的变化(从管理到根)。它也似乎,我可以继续按照苹果的SMJobBless示例代码使用类似的代码...
...牢固地安装一个辅助工具,执行特权操作...
但我注意到,kCFPreferencesAnyUser
本身的文档声明:
此域当前不支持。
是否正在使用帮助工具创建所有用户首选项的正确方法?或者是否有其他一些我应该使用的支持方法?
感谢您的回答。我对你对系统偏好的含义有些困惑。我的例子中的应用程序不是“父应用程序”吗?我需要编写的偏好特定于我的应用程序。 – Rich
我不认为它*完全*失败*失败。随后对'CFPreferencesSynchronize'的调用返回false,表示发生了错误。 – Rich
值得一提的是,为'kCFPreferencesAnyUser'域写入首选项需要使用'kCFPreferencesCurrentHost',这会让我耽搁一段时间(在本页底部提到:https://developer.apple.com/库/ MAC /文档/的CoreFoundation /参考/ CFPreferencesUtils /参考/#的reference.html // apple_ref/DOC/UID/20001450-CH1g-130209) – Matthematics