Windows文件关联
注册表
- 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