2017-10-04 82 views
0

当使用CFPreferences在OSX上设置首选项时,有不同的 Preference DomainsCFPreferences任何主机和任何应用程序域行为

通过阅读苹果开发指南,我明白,当前用户通电用当前主机偏好,它会被存储在〜/库/首选项/ <应用软件包的名称> .plist。而对于任何用户通电用当前主机偏好,它会被存储在/库/首选项/ <应用程序包名称>的.plist

但是,如何存储其他域组合的偏好?例如当前用户,当前应用程序,任何主机?在所有连接到本地网络并以当前用户身份登录的主机上,设置时间(CFPreferencesSetAppValue后跟同步)将优先权传播至〜/ Library/Preferences/<应用程序包名称> .plist?或者,在读取所有主机时(但在这种情况下如何处理来自不同主机的冲突首选项)读取过程中的魔法?

任何应用程序域的相同问题,首选项将存储在域中,如当前用户,任何应用程序,当前主机

回答

1

首选项的“默认”是当前用户,当前应用程序,任何主机。使用包名称com.example为例,这些首选项将在

~/Library/Preferences/com.example.plist 

存储是什么让这个“任何主机”是你的home目录存储在网络共享上的假设。没有额外的机制来跨计算机同步它。一般来说,你应该总是使用任何主机,除非你设置的值确实需要特定于用户所在的物理机器。其当前主机设置

偏好存储在ByHost目录下,与包括用于计算机中的UUID,诸如文件名:其为所有应用程序设置

~/Library/Preferences/ByHost/com.example.74263C97-28D5-4AF0-8E7A-3169F1CCB545.plist 

偏好被存储下的包名称.GlobalPreferences,如:

~/Library/Preferences/.GlobalPreferences.plist 

,同样适用于所有应用,当前主机:

~/Library/Preferences/ByHost/.GlobalPreferences.74263C97-28D5-4AF0-8E7A-3169F1CCB545.plist 

为所有用户设置的首选项遵循相同的模式,/Library/Preferences除外。

+0

谢谢!非常有帮助和完整的答案。因此,对于任何用户,任何主机设置,假定根目录需要存储在网络共享下? – yijiem

+0

@yijiem至少需要共享'/ Library'。实际上,任何用户设置对于机器来说都是本地的,无论它们是否设置为当前主机,只有当前用户设置实际上在实践中共享。 – duskwuff

相关问题