将文件扩展名与程序相关联

Cyc*_*one 7 vb.net registry file-association

我知道怎么做了,之前我去过http://www.codeproject.com/KB/vb/VBFileAssociation.aspx.我的问题是关于做了什么,是否有可能扭转它?如果你不知道你的程序在哪里,你现在只是测试它会怎么样?有没有办法让它"找到"你的程序,或者一种简单的方法来编辑它的打开位置?就此而言,是否可以判断文件是否已经关联,尝试重新关联是一个问题吗?最后,如何设置它使用的.ico文件?

感谢您的帮助,我对注册表几乎一无所知,这让我很困惑...

Fac*_*tic 18

为简洁起见,我使用的是假根密钥.在实践中,更换Hive_KeyHKEY_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键的默认值具有默认的动词键名称,即用户双击文件时调用的动词.

这些上下文菜单项是Verbs.对于我们的示例,使用记事本打开文件的动词将如下所示: Hive_Key\Software\Classes\ext_auto_file\shell\open\command使用默认值notepad.exe %1.

这是您放置程序路径的地方.如果您的程序在系统PATH中,如notepad.exe,则无需指定完整路径.在更可能的情况下,您需要指定exe的路径.出于测试目的,您可以将其设置为构建目录.

您询问了如何检查这些内容,这可以通过首先检查扩展键的默认值来获取ProgID,然后检查shellProgID键的子键以获取默认动词,然后检查\shell\verb\command以获取程序的路径来完成.推出.

打开regedit.exe并浏览其他文件类型的注册表项可能会很有启发性,以便更好地了解它是如何工作的.

此外,如果特定扩展名不受控制面板中默认设置(默认程序)的程序控制,则上述内容均有效.您可以通过检查密钥是否存在来检查此状态HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Explorer\FileExts\.EXT\UserChoice.如果是,则需要在自定义生效之前撤消"默认程序"控件.这可以通过删除该UserChoice子项来完成.