1

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

通过阅读苹果开发指南,我了解到对于current-usercurrent-applicationcurrent-host首选项,它将存储在~/Library/Preferences/< application bundle name >.plist中。对于any-usercurrent-applicationcurrent-host首选项,它将存储在/Library/Preferences/< application bundle name >.plist中。

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

对于任何应用程序域,同样的问题是,当前用户、任何应用程序、当前主机等域的首选项将存储在哪里?

4

1 回答 1

2

首选项的“默认”是当前用户、当前应用程序、任何主机。以捆绑包名称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.

于 2017-10-05T00:15:41.727 回答