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

來源:互聯網
上載者:User
深入理解偏好檔案:位置:

    系統和應用程式的喜好設定檔案的存放,在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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.