登錄檔
- 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"
目標
因此,要實現指定字尾的檔案透過自己開發的軟體開啟,就需要做兩件事情:
- 註冊應用程式ProgId,即Examer.exam
- DefaultIcon:設定檔案圖示
- shell\open\command:設定透過檔案開啟時的命令,
%1
就是目標檔案的路徑,這裡會影響程式中的讀取
- 註冊副檔名關聯資訊,即.exam
- OpenWithProgids:關聯的應用程式,即Examer.exam