Windows檔案關聯

hdxg發表於2024-05-06

登錄檔

  • Windows的檔案關聯是透過登錄檔實現的。
  • HKEY_CLASSES_ROOT節點包含了副檔名關聯資訊。
  • 不建議直接修改HKEY_CLASSES_ROOT,而是修改HEKY_CURRENT_USER\Software\Classes或HKEY_LOCAL_MACHINE\Software\Classes。
  • HKEY_CLASSES_ROOT是兩者的合併。
  • 如果出現同名鍵,HEKY_CURRENT_USER\Software\Classes的優先順序高於HKEY_LOCAL_MACHINE\Software\Classes。

以.md檔案為例。在HKEY_CLASSES_ROOT下看到

- .md
	* OpenWithProgids # Typora.md 和 VSCode.md

然後看到Typora.md:

- Typora.md
	* DefaultIcon # C:\Users\80647\AppData\Local\Programs\Typora\resources\assets\file.ico
	- shell
		- open
			* command # "C:\Users\80647\AppData\Local\Programs\Typora\Typora.exe" "%1"

目標

因此,要實現指定字尾的檔案透過自己開發的軟體開啟,就需要做兩件事情:

  1. 註冊應用程式ProgId,即Examer.exam
    1. DefaultIcon:設定檔案圖示
    2. shell\open\command:設定透過檔案開啟時的命令,%1 就是目標檔案的路徑,這裡會影響程式中的讀取
  2. 註冊副檔名關聯資訊,即.exam
    1. OpenWithProgids:關聯的應用程式,即Examer.exam

相關文章