CFPreferences 任何主机和任何应用程序域行为

CFPreferences any-host and any-application domain behavior

在 osx 上使用 CFPreferences 设置首选项时,有不同的 Preference Domains.

通过阅读apple development guide,了解到对于current-user, current-application, current -host preference,会存放在~/Library/Preferences/.plist中。对于 any-usercurrent-applicationcurrent-host 偏好,它将存储在/Library/Preferences/<应用程序包名称>.plist.

但是在哪里存储其他域组合的首选项?例如 当前用户、当前应用程序、任何主机?首选项是否会在设定时间(CFPreferencesSetAppValue 之后同步)传播到 ~/Library/Preferences/<应用程序包名称>.plist所有连接到本地网络并以当前用户身份登录的主机?或者在读取所有主机时魔术就完成了(但在这种情况下如何处理来自不同主机的冲突首选项)?

关于任何应用程序域的相同问题,current-user, any-application, current-host?[=11= 等域的首选项将存储在哪里]

首选项的 "default" 是当前用户、当前应用程序、任何主机。以包名称 com.example 为例,这些首选项将存储在

~/Library/Preferences/com.example.plist

之所以这样 "any-host" 是因为假设您的主目录存储在网络共享上。没有额外的机制来跨计算机同步它。一般来说,您应该始终使用任何主机,除非您设置的值确实需要特定于用户所在的物理机器。

为当前主机设置的首选项存储在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