檔案類型

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

本主題的組織方式如下:

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

公用和私人檔案類型

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

  • 它們通常是由標準主體所定義,而/或是由其將組織定義為交換格式來提升。
  • 它們通常會在電腦和使用者之間交換,以供各種用途使用。
  • 在許多不同的平臺上都必須支援它們。
  • 來自多個廠商的應用程式可能會加以處理。

一些被視為公用的檔案類型範例包括映射檔案類型.png、.gif、.jpg和.bmp,以及音訊類型 .wav、.mp3 和 .au。

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

注意

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

 

註冊檔案類型

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

副檔名子機碼的格式如下:副檔名=ProgID。 副檔名子機碼會儲存在 HKEY_CLASSES_ROOT 子樹中。

請務必在登錄中建立檔案類型子機碼時,包含前置期間 (.) 。 例如,如果您希望副檔名為 .myp 的檔案類型,以及使用名為 MyProgram 的應用程式開啟長副檔名 .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 請勿使用。 此子機碼包含一或多個應用程式子機碼,這些應用程式會出現在檔案類型的 [ 開啟 ] 對話方塊專案中,而且僅適用于 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\ 軟體類別和HKEY_LOCAL_MACHINE\軟體\\類別所構成檢視

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

  • 若要在特定電腦上全域註冊檔案類型,請在HKEY_LOCAL_MACHINE\Software\Classs子機碼中建立檔案類型的專案。

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

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

    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
(進階串流格式 (ASF) 容器) Windows 媒體格式 .wmv、.wma
MP4 (屬性處理常式) .mp4、.m4a、.m4v、.mp4v、.m4p、.m4b、.3gp、.3gpp、.3gp2、.mov

 

應用程式註冊

檔案關聯的運作方式

依檔案類型或種類檢視內容

檔案類型驗證程式

檔案類型處理常式

程式設計識別碼

認知類型

關聯陣列