共用方式為


檔案類型

本主題說明如何建立新的檔案類型,以及如何將您的應用程式與您的檔案類型和其他定義完善的檔類型產生關聯。 具有共用通用擴展名的檔案(.doc、.html等等)的檔案與 相同類型。 例如,如果您建立新的文本編輯器,則可以使用現有的 .txt 檔類型。 在其他情況下,您可能需要建立新的文件類型。

本主題的組織方式如下:

如需其他資訊,請參閱下列主題:

公用和私人文件類型

公用檔類型也稱為熱門或有爭議的類型,因為競爭應用程式可能想要與這些檔類型相關聯。 公用檔案類型的特性包括:

  • 它們通常由標準機構定義,而/或是由其定義組織來提升為交換格式。
  • 它們通常會在計算機和使用者之間交換,以取得各種用途。
  • 它們必須在許多不同的平臺上受到支援。
  • 來自多個廠商的應用程式可能會處理它們。

一些被視為公用的檔類型範例是影像檔類型 .png、.gif、.jpg和 .bmp,以及音訊類型.wav、.mp3和 .au。

與公用檔類型不同,私人或專屬檔類型通常只有一個應用程式或廠商會實作並瞭解該格式。 因此,私人檔類型通常不容易在應用程式之間發生衝突。 某些檔類型可以啟動為私人文件類型,但稍後會變成公用檔類型。

注意

Windows 不會區分公用和私人文件類型。 差別只有在決定您選擇的檔類型註冊時才相關。

 

註冊文件類型

若要將檔類型與現有的應用程式產生關聯,請在登錄中找出應用程式 ProgID。 若要將檔類型與新的應用程式產生關聯,請為您的應用程式定義 ProgID。 如需定義新 ProgID 的相關信息,請參閱 程式設計識別子

擴充名子機碼具有下列一般格式:擴展名=ProgID。 擴展名子機碼會儲存在 HKEY_CLASSES_ROOT 子樹中。

在登錄中建立文件類型子機碼時,請務必包含前置期間 (.)。 例如,如果您想要使用名為 MyProgram 的應用程式開啟簡短擴展名 .myp 和長擴展名 .myp-file 的文件類型,請使用下列語法:

HKEY_CLASSES_ROOT
   .myp
      (Default) = ApplicationVendor.MyProgram
   .myp-file
      (Default) = ApplicationVendor.MyProgram
   ApplicationVendor.MyProgram
      (Default) = MyProgram Application

如上述範例所示,如果您也註冊簡短擴展名 (.myp),則也應該建立長擴展名 (.myp-file) 的子機碼。 如需詳細資訊,請參閱 檔案類型處理程式

設定選擇性子機碼和檔類型擴充屬性

登錄中的檔類型擴充專案有數個選擇性子機碼和屬性。

下表說明檔案關聯所使用的檔類型擴展名專案。 所有值都是 REG_SZ 類型。

登錄專案 行動
違約 將延伸模組子機碼的預設值設定為連結的 ProgID。
內容類型 將 [內容類型] 值設定為檔案類型的MIME內容類型。
OpenWithList 請勿使用。 此子機碼包含一或多個應用程式子機碼,這些應用程式會出現在 [Open with] 對話框專案的檔類型,而且僅適用於 Windows XP 之前的作系統上的 .exe 應用程式。 請改用 OpenWithProgIds。
OpenWithProgIds 此子機碼包含此檔案類型的替代 ProgID 清單。 這些 ProgID 的程式會出現在 [以 開啟] 功能表的 [] 中,並可作為檔類型的預設 Windows 市集應用程式使用。 每當應用程式藉由變更預設值來接管此檔案類型時,它也應該將專案新增至此清單。
PerceivedType 將 PerceivedType 值設定為檔案所屬的 PerceivedType,如果有的話。 Windows Vista 之前的 Windows 版本不會使用此字串。 如需詳細資訊,請參閱 感知類型和應用程式註冊

 

擴展名子機碼的一般形式如下。 所有項目類型都是 REG_SZ 類型。

HKEY_CLASSES_ROOT
   .ext
      (Default) = ProgID.ext.1
      Content Type = MIME content type
      PerceivedType = PerceivedType
      OpenWithProgids
         ProgID2.ext.1
         ProgID3.ext.1
      ProgID.ext.1
         shellnew

檔案類型的重要考慮包括:

  • HKEY_CLASSES_ROOT 子樹是由合併 HKEY_CURRENT_USER\Software\ClassesHKEY_LOCAL_MACHINE\Software\Classes 所構成的檢視

  • 一般而言,HKEY_CLASSES_ROOT 是要讀取,但不會寫入。 如需詳細資訊,請參閱 HKEY_CLASSES_ROOT 一文。

  • 若要全域登錄特定電腦上的文件類型,請在 HKEY_LOCAL_MACHINE\Software\Classes 子機碼中建立檔類型的專案。

  • 若要讓目前使用者只能看見檔類型註冊,請在 HKEY_CURRENT_USER\Software\類別 子機碼中建立檔類型的專案。

  • 應用程式可以提供自己的動詞實作,例如開啟或播放,如下列登錄範例所示。

    HKEY_CLASSES_ROOT
       Applications
          ApplicationName.exe
             shell
                verb
    

    動詞子機碼的子機碼包括命令行和置放目標方法:命令DropTarget

  • 當您建立或變更檔案關聯時,請務必通知系統您已進行變更。 藉由呼叫 SHChangeNotify 並指定 SHCNE_ASSOCCHANGED 事件來執行此動作。 如果您未呼叫 SHChangeNotify,則在系統重新啟動之前,可能無法辨識變更。

  • 若要擷取檔案關聯的相關登錄資訊,請使用 IQueryAssociations 介面。 如需說明此程式的案例,請參閱 檔案關聯範例案例

注意

應用程式路徑應用程式 登錄子機碼都用來代表應用程式註冊和控制系統的行為。 如需此功能的詳細資訊,請參閱 應用程式註冊

 

在卸載期間刪除登錄資訊

卸載應用程式時,應該在卸載時刪除與該應用程式相關聯的 ProgID 和大部分其他登錄資訊。 不過,已取得檔類型擁有權的應用程式(藉由將檔類型的預設值 HKEY_CLASSES_ROOT\.extension 子機碼設定為應用程式的 ProgID),不應嘗試在卸載時移除該值。 保留預設值的數據,可避免判斷另一個應用程式是否已取得檔類型的擁有權,並在安裝原始應用程式之後覆寫預設值。 只有在找到 ProgID 且有已註冊 ProgID 時,Windows 才會遵守預設值。 如果取消註冊 ProgID,則會忽略它。

請注意,其他檔類型擁有權資訊會儲存在 HKEY_CURRENT_USER 子樹中,而且只有在註冊它參考的應用程式時才使用。 因此,卸載應用程式時不需要移除此數據。

例如,以下顯示卸載應用程式之前登錄的狀態:

HKEY_CLASSES_ROOT
   .mp3
      (Default) = YourProgID
   YourProgID
      shell
         open
            command
               (Default) = yourapp.exe %1

下列顯示卸載應用程式之後,這些相同登錄項目的狀態。

HKEY_CLASSES_ROOT
   .mp3
      (Default) = YourProgID
   YourProgID subkey removed

支援開啟元數據的檔類型

在 Windows 7 和更新版本中,下列檔類型支援開啟的元數據。

檔案類型 擴展名
Office 2007 檔 .docx、.xlsx、.pptx
Office 97-2003 檔 .doc、.xls、.ppt
已儲存的搜尋 .search-ms
Windows 媒體格式 (進階串流格式 (ASF) 容器) .wmv,.wma
MP4 (屬性處理程式) .mp4、.m4a、.m4v、.mp4v、.m4p、.m4b、.3gp、.3gpp、.3gp2、.mov

 

應用程式註冊

檔案關聯的運作方式

依檔類型或種類 內容檢視

檔案類型驗證程式

檔案類型處理程式

程式設計標識碼

感知型別

關聯陣列