首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OS X中存储对所有系统用户通用的会话值

如何在OS X中存储对所有系统用户通用的会话值
EN

Stack Overflow用户
提问于 2015-03-04 14:12:36
回答 1查看 230关注 0票数 1

在我的mac应用程序中,我使用NSUserDefaults在会话中存储值。此NSUserDefaults只为相应的系统级别用户保留会话值。但是现在我想使用对所有系统级用户都常见的会话值。如果我从admin存储会话值,那么任何系统用户都应该访问它(针对Ex:来宾用户)。

建议你的答案来实现这一点。

编辑内容:

我使用CFPreferences存储所有系统用户的会话值--参考迈克尔的答案。

代码:

在CFPreferences中保存值

代码语言:javascript
复制
 CFStringRef appID = CFSTR("com.company.test");
    CFStringRef textColorKey = CFSTR("test123");
    CFStringRef colorBLUE = CFSTR("BLUE");
    CFPreferencesSetValue (textColorKey,
                           colorBLUE,
                           appID,
                           kCFPreferencesAnyUser,
                           kCFPreferencesCurrentHost
                           );

    CFPreferencesSynchronize(appID,
                             kCFPreferencesAnyUser,
                             kCFPreferencesCurrentHost);

从CFPreferences检索

代码语言:javascript
复制
CFStringRef textColorKey = CFSTR("test123");
CFStringRef textColor;
// Read the preference.
CFStringRef appID = CFSTR("com.company.test");

textColor = (CFStringRef)CFPreferencesCopyValue(textColorKey,
                                                appID,
                                                kCFPreferencesAnyUser,
                                                kCFPreferencesCurrentHost);

但它总是能得到零值。请指出我在这里缺少的是什么。

EN

回答 1

Stack Overflow用户

发布于 2015-03-04 19:56:22

如果您在NSUserDefaults文档的前几段中查看,您将看到以下提示:

NSUserDefaults类目前不支持每个主机的首选项。要做到这一点,您必须使用CFPreferences API (请参阅Preferences实用程序引用)。但是,NSUserDefaults正确地读取每个主机的首选项,因此您可以安全地将CFPreferences代码与NSUserDefaults代码混合使用。

CFPreferences确实有一个钥匙,但它也是一个用于您所要做的事情的尾部疼痛的使用。其他人建议使用解决方法涉及将文件隐藏在机器上所有用户都可读和可写的位置。,但是如果您真的想要正确地完成这个任务,您需要想出一个涉及编写一个单独的工具(获取根/管理权限)来设置这些特权,通过应用程序的SMJobBless调用的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28856634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档