檔案關聯的最佳作法
下列清單是使用檔案關聯時應該使用的最佳做法。
- 不要從登錄複製檔案關聯
- 盡可能避免Hard-Coding登錄的路徑
- 一律以引號換行展開字串
- 不要混淆自動播放/自動執行與檔案關聯
- 請勿將 Internet Explorer MIME 資料庫與檔案關聯混淆
- 使用正確格式和已設定版本的 ProgID
- 請勿使用簡短副檔名
- 在 IANA MIME 資料庫中註冊新的檔案類型
- 向 Windows Web 服務註冊檔案關聯
- 相關主題
我們建議您不要從登錄複製現有的檔案關聯。 這通常會導致傳播格式不佳的檔案關聯。 相反地,您應該遵循 檔案關聯範例案例中所述的步驟。
就像程式硬式編碼路徑可能會導致問題一樣,將硬式編碼路徑寫入登錄也可能會導致問題。 相反地,您應該使用登錄擴充字串 (REG_EXPAND_SZ) ,以在適用的情況下提供路徑獨立性。 例如,不要使用此方法:
HKEY_CLASSES_ROOT
MyVendor.MyProgram.1
DefaultIcon
(Default) = C:\WINNT\hta.exe,1
您應該使用此方法:
HKEY_CLASSES_ROOT
MyVendor.MyProgram.1
DefaultIcon
(Default) = "%SYSTEMROOT%\hta.exe,1"
展開字串可以在展開時包含空格。 因為空格通常會解譯為引數分隔符號,所以在某些情況下會造成問題。 例如,叫用 MyProgram 的命令可以儲存在登錄中,如下所示:
%SYSTEMROOT%\MyProgram %1 %2
MyProgram 預期 %1 是檔案名的完整路徑,而 %2 是表示某些動作的切換。 如果使用 C:\Program Files\My Documents\document.txt 和 /print引數執行此命令,而且假設有 C:\WINNT 的 SYSTEMROOT,它會展開至:
C:\WINNT\MyProgram C:\Program Files\My Documents\document.txt /print
在此情況下,MyProgram 會解譯第一個引數是 C:\Program,而第二個引數是 Files\My,這不是預期的行為。 不過,不論引數是否包含空格,如果展開字串以引號括住,都會正確解譯,如下所示:
"%SYSTEMROOT%\MyProgram" "%1" "%2"
檔案關聯類似于自動執行/自動執行一些方式。 不過,自動播放/自動執行提供與檔案關聯所提供的不同功能。 如需詳細資訊,請參閱 建立已啟用自動執行功能的 CD-ROM 應用程式。
檔案關聯類似于 Windows Internet Explorer MIME 資料庫,在該檔案類型中可以 (,而且應該) 包含 MIME 類型定義。 不過,Internet Explorer MIME 資料庫與檔案關聯不同。
一律使用 已設定版本的 ProgID,即使只有一個 ProgID 版本也一樣。 已設定版本的 ProgID 有助於避免 ProgID 衝突和覆寫。 它們也會讓不同版本的應用程式共存。
長副檔名提供下列優點:
- 簡短延伸模組的長度有限,使其容易發生 延伸模組衝突。 當相同的副檔名用來分類多個檔案類型時,就會發生延伸模組衝突。 使用長延伸模組可大幅降低衝突的機會。
- 簡短檔案名通常有點模糊。 長延伸模組通常更有意義,因為其他資訊可以內嵌在延伸模組中。
如需詳細資訊,請參閱 副檔名。
網際網路指派號碼授權單位 (IANA) 保留已註冊 MIME 類型的公用資料庫。 定義新的公用檔案類型時,建議您也為檔案類型定義 MIME 類型,並使用 IANA 註冊此類型。 註冊不需要任何成本。
應用程式開發人員可以使用 Windows Web 服務註冊,讓使用者用來尋找可在特定檔案類型上運作的應用程式。 註冊 Web 服務的程式詳述于 Windows 檔案關聯系統上執行緒序 (KB 929149) 。