为简洁起见,我使用假根密钥。在实践中,替换Hive_Key
with HKEY_LOCAL_MACHINE
对于系统默认设置,或HKEY_CURRENT_USER
用于每用户设置。这些键中的任何一个都可以存在,或者两者都存在。如果它们都存在,则HKCU
键优先。
要将扩展名与文件类型关联起来,您需要设置扩展名键的默认值(Hive_Key\Software\Classes\.ext
)与选定的文件类型,通过设置默认键值。
实际启动的程序以及其他文件类型详细信息可以在文件类型中找到。文件类型由所谓的ProgID
(“编程标识符”的缩写,它是类标识符的更易于阅读的版本)。 ProgID 键位于Hive_Key\Software\Classes
,此图的示例值可能是ext_auto_key
.
ProgID 可以有一个默认值,该值将是资源管理器中文件类型的友好描述(例如“Microsoft Word 文档”)。您需要确保选择用户易于理解的描述。
ProgID 可能有一个子项,DefaultIcon
,这是存储文件类型图标的位置。该图标路径是该键的默认值。
ProgID 密钥可以是子密钥,shell
,其中将包含文件上的上下文菜单项以及该上下文菜单项将调用的程序。与 ProgID 的默认值类似,动词键的默认值是将显示在上下文菜单上的文本。这个的默认值shell
key 具有默认的动词键名称,这是用户双击文件时调用的动词。
这些上下文菜单项是Verbs
。对于我们的示例,使用记事本打开文件的动词如下所示:Hive_Key\Software\Classes\ext_auto_file\shell\open\command
带默认值notepad.exe %1
.
这是您放置程序路径的位置。如果您的程序位于系统 PATH 中(如 notepad.exe 所示),则不需要need指定完整路径。在更可能的情况下,您需要指定 exe 的路径。出于测试目的,您只需将其设置为构建目录即可。
您询问如何检查这些内容,这可以通过首先检查扩展键的默认值以获取 ProgID,然后检查shell
ProgID 键的子键来获取默认动词,然后检查\shell\verb\command
获取启动程序的路径。
打开可能会有所启发regedit.exe
并浏览其他文件类型的注册表项,以更好地了解其工作原理。
此外,如果特定扩展不受控制面板中设置为默认程序(默认程序)的控制,则上述所有内容均有效。您可以通过检查密钥是否存在来检查此状态HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Explorer\FileExts\.EXT\UserChoice
。如果是这样,您将需要撤销默认程序控制才能使您的自定义生效。这可以通过删除来完成UserChoice
subkey.