Vb.net 将文件扩展名与程序关联
我知道怎么做,我以前也去过。我的问题是这样做有什么作用,有可能逆转吗?如果您不知道您的程序将在哪里,而您现在只是在测试它,该怎么办?有什么方法可以让它“找到”你的程序,或者用一种简单的方法来编辑它的打开位置吗?就这一点而言,是否可以判断文件是否已经关联,是否存在尝试和重新关联的问题?最后,如何设置它使用的.ico文件Vb.net 将文件扩展名与程序关联,vb.net,registry,file-association,Vb.net,Registry,File Association,我知道怎么做,我以前也去过。我的问题是这样做有什么作用,有可能逆转吗?如果您不知道您的程序将在哪里,而您现在只是在测试它,该怎么办?有什么方法可以让它“找到”你的程序,或者用一种简单的方法来编辑它的打开位置吗?就这一点而言,是否可以判断文件是否已经关联,是否存在尝试和重新关联的问题?最后,如何设置它使用的.ico文件 谢谢你的帮助,我对注册表几乎一无所知,这让我很困惑,哈哈…为了简单起见,我使用了一个伪根键。实际上,对于系统默认设置,用HKEY\U LOCAL\U MACHINE替换Hive\U
谢谢你的帮助,我对注册表几乎一无所知,这让我很困惑,哈哈…为了简单起见,我使用了一个伪根键。实际上,对于系统默认设置,用
HKEY\U LOCAL\U MACHINE
替换Hive\U Key
,对于每个用户设置,用HKEY\U CURRENT\U USER
替换。这两个键中的一个允许存在,或者两者都允许存在。如果两者都存在,HKCU
键优先
要将扩展名与文件类型关联,需要通过设置默认键值,将扩展键(Hive\u key\Software\Classes\.ext
)的默认值设置为所选文件类型
在文件类型中可以找到实际启动的程序以及其他文件类型详细信息。文件类型通过被称为ProgID
的内容来表示(缩写为“编程标识符”,它是类标识符的更易于阅读的版本)。ProgID键可在Hive\u Key\Software\Classes
中找到,本图的示例值可能是ext\u auto\u Key
ProgID可能有一个默认值,它将是资源管理器中文件类型的友好描述(如“Microsoft Word文档”)。这取决于您是否选择了用户易于理解的描述
ProgID可能有一个子项,DefaultIcon
,它是存储文件类型图标的位置。该图标路径是该键的默认值
ProgID键可以是一个子键,shell
,它将包含文件上的上下文菜单项,以及该上下文菜单项将调用的程序。与ProgID的默认值类似,谓词键的默认值是上下文菜单上显示的文本。此shell
键的默认值具有默认谓词键名称,即用户双击文件时调用的谓词
这些上下文菜单项是动词
。对于我们的示例,使用记事本打开文件的谓词如下所示:
Hive\u Key\Software\Classes\ext\u auto\u file\shell\open\command
默认值为notepad.exe%1
这是您将放置程序路径的位置。如果程序位于系统路径中,如notepad.exe所示,则无需指定完整路径。在更可能的情况下,您需要指定exe的路径。出于测试目的,您可以将其设置为构建目录
您询问了如何检查这些内容,首先检查扩展键的默认值以获取ProgID,然后检查ProgID键的shell
子键以获取默认谓词,然后检查\shell\verb\command
以获取启动程序的路径
打开regedit.exe
并浏览这些注册表项以查找其他文件类型可能会有所启发,从而更好地了解其工作原理
此外,如果特定扩展不受控制面板中设置为默认(默认程序)的程序的控制,则上述所有内容均有效。您可以通过检查密钥HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.EXT\UserChoice
的存在来检查此状态。如果是,您将需要在自定义生效之前撤销默认程序控件。这可以通过删除UserChoice
子键来完成