2017-10-04 27 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

相關問題