日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Mac OS X: 偏好Preferences基礎(2)

系統 2176 0

深入理解偏好文件:

位置:

系統和應用程序的偏好設置文件的存放,在Mac OS X系統中可以歸為兩個范疇,一個是系統范疇,一個是用戶范疇.

系統范疇內儲存的是系統的或者是系統全局的偏好設置,這一點要和用戶范疇對比來說,用戶范疇是針對不同用戶的,用戶自己設置的偏好。

具體來說,一般地,系統范疇的儲存在/Library/Preferences/目錄里,而用戶范疇的儲存在~/Library/Preferences/目錄里(注 1 ).
1 : 在系統里面~符號代表用戶的home目錄,比如用戶student的home目錄在/Users/student, 這時 ~就等于/Users/student, 而~/Library/Preferences/就是/Users/student/Library/Preferences/.

兩種類型的plist文件

  • 硬件特定位置(ByHost Preference)

Mac系統支持一種特定硬件的偏好設置,這些偏好文件儲存在ByHost目錄中,用戶可以在自己的home目錄的~/Library /Preferences/ByHost/里面,對于不同的系統(軟件和硬件),Mac OS X系統或應用程序可能會將偏好設置文件儲存在ByHost里面,這樣這個文件中涉及的所有設置都只是相關于這個計算機本身。

ByHost偏好設置文件都有一個特殊的文件名以示和本系統硬件相關,在Mac OS X 10.5之前的版本,系統使用的偏好設置文件名是在普通文件名中加入網卡的MAC地址來區別的,比如:
com.apple.screensaver.001122334455.plist就是用戶設定屏幕保護的偏好配置。
而在Mac OS X 10.5之后,為了可以更好地標示系統的唯一性,它使用系統的UUID來替換原來MAC地址的內容,比如,上面同樣的屏幕保護的偏好配置,我的是: com.apple.screensaver.27074F01-7A93-5859-BAF3-0EB138E001D3.plist

為什么一定要使用ByHost配置呢? 有些程序的偏好設置的確可以歸結為與硬件相關,有些是為了程序的特性。除了上面提到的屏幕保護程序外,還有比如ImageCapture使用那個程序的設 置就是ByHost的,無論打開Image Capture.app還是iPhoto.app程序,在它們的Preferences里面都有一個選項是下載照片使用哪個程序,見下圖就是Image Capture.app的Preferences的截圖:

里面設置使用iPhoto,如果沒有設定值,就顯示no application,Mac OS X系統就是靠這個偏好配置文件來啟動對應程序的. 到ByHost中就可以看到叫做: com.apple.ImageCapture.27074F01-7A93-5859-BAF3-0EB138E001D3.plist, 它的內容在Property List Editor.app中顯示為下圖:


再例如,控制當前顯示所支持的分辨率個數的信息,也是存儲在ByHost里面,這一點比較容易理解。下圖是顯示10個分辨率的選項:


它的plist文件顯示如下:


還有一種用處,如果一個程序的許可證是用戶只能安裝在一臺機器上使用,這樣ByHost的偏好配置就是一種可以方便使用的機制, 比如有版權保護的程序,例如iTunes,需要保存本機本用戶的唯一標識,并與版權信息共同制作一個簽名,這樣防止盜版。

如何找到這個UUID呢?在Terminal中執行下面的命令:

ioreg -d2 -c IOPlatformExpertDevice


在一臺iMac上可以看到下面的內容:

+-o iMac8,1 <class IOPlatformExpertDevice, registered, matched, active, busy 0, retain 23>
{
"IOBusyInterest" = "IOCommand is not serializable"
"IOInterruptControllers" = ("io-apic-0")
"IOPlatformSerialNumber" = "YMXXXXXXXXX"
"clock-frequency" = <005a6b3f>
"version" = <"1.0">
"product-name" = <"iMac8,1">
"IOInterruptSpecifiers" = (<0900000005000000>)
"board-id" = <"Mac-F226BEC8">
"model" = <"iMac8,1">
"serial-number" = <5xxxx200000000000000000000xxxxxxxxxxx4dxx5axxxx00000000000000000000000000000>
"manufacturer" = <"Apple Inc.">
"IOPlatformArgs" = <00c0xxx00050exxxxxxeef0000000000>
"name" = <"/">
"IOPlatformUUID" = "FXXXXXX5-XXXX-XXXX-XXXX-82XXXXXXXX34"
"compatible" = <"iMac8,1">
"IOPolledInterface" = "SMCPolledInterface is not serializable"
"system-type" = <01>
}


從上面的內容可以找到一行叫"IOPlatformUUID"的,這個就是了,為了可以一次找到,運行下面的命令

ioreg -rd1 -c IOPlatformExpertDevice | grep "IOPlatformUUID"


這個UUID只有在Mac OS X 10.5以上版本的系統中猜支持,另外一個問題是,并不是所有的硬件系統都支持,比如下面是一個較老的版本的iMac系統(2007),它的UUID前面部分是" 00000000-0000-1000-8000 " 后面根著的是網卡MAC地址,在這樣的系統中,就不使用這個UUID作為標示了,而是沿用舊的方法,直接使用MAC地址.

"IOPlatformUUID" = "00000000-0000-1000-8000-00XXXXXXXX20"


在Mac OS X 10.5以前的系統中,同樣支持這個命令ioreg,但是不支持-rd1或者-d2的選項。

  • 全局偏好位置(Global Preference)

全局偏好文件是一個特殊的plist文件,存在于系統和用戶范疇內,但是在Finder出口中一般看不到,到Terminal中,可以找到 /Library/Preferences/.GlobalPreferences.plist或者~/Library/Preferences /.GlobalPreferences.plist兩個文件. 它們定義系統或者用戶全局的系統參數,比如時區等.

常用工具

常用圖形工具:

Property List Editor:首選當然是蘋果開發工具中的這個應用程序,免費而且是主要工具.
PlistEdit :可以打開處理文本和二進制文件,并以原來的格式保存,
PlistEdit Pro :收費軟件,特點是XML明碼和樹狀結構同時顯示.
PrefEdit :方便查找plist文件,2.0版本開始收費, 1.2的還是免費

命令行工具:

plutil:主要用來檢查plist文件的語法,并將plist文件在Text和Binary之間轉換.
defaults: 用于操作plist文件, 但是操作多層屬性時有局限;10.5之后都默認將文本格式轉化為Binary格式, 這樣可以提高系統讀取速度.
PlistBuddy: 是一個比defaults更加靈活的工具,可以任意編輯多層的屬性,但是不是OS X自帶的.

Tony Liu

June 26, 2009 Calgary

Mac OS X: 偏好Preferences基礎(2)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天等县| 祁东县| 南汇区| 宝兴县| 舒城县| 洪雅县| 渑池县| 长垣县| 获嘉县| 昌平区| 左权县| 德保县| 朝阳区| 开江县| 曲周县| 崇州市| 青岛市| 山东| 新野县| 南江县| 察哈| 上蔡县| 康乐县| 沂源县| 大方县| 达尔| 千阳县| 木兰县| 台中县| 正阳县| 浦北县| 文登市| 保靖县| 凤凰县| 武穴市| 吕梁市| 米脂县| 申扎县| 蕲春县| 山丹县| 孟州市|