2009-10-12 103 views
7

我得到了如何去做,而我之前去过http://www.codeproject.com/KB/vb/VBFileAssociation.aspx。我的问题是关于做什么,是否有可能扭转它?如果你不知道你的程序将在哪里,你现在只是在测试它?有没有什么方法可以“找到”你的程序,或者是一种简单的方法来编辑它的打开位置?对于这个问题,是否有可能知道文件是否已经关联,是否需要重新关联?最后,你如何设置它使用的.ico文件?将文件扩展名与程序关联

感谢您的帮助,我几乎一无所知注册表和它混淆了我笑......

回答

17

为了简便起见,我使用的是假的根密钥。实际上,将Hive_Key替换为系统默认设置的HKEY_LOCAL_MACHINE,或者对于每个用户设置替换HKEY_CURRENT_USER。这些键中的任何一个都允许存在,或者两者兼有。如果它们都存在,HKCU键优先。

要将扩展名与文件类型相关联,您需要通过设置默认键值来设置扩展键的默认值(Hive_Key\Software\Classes\.ext)与所选文件类型。

在文件类型中找到启动的实际程序以及其他文件类型的详细信息。文件类型通过称为ProgID(“程序标识符”,它是类标识符的更易于阅读的版本)的简称来标记。在Hive_Key\Software\Classes中找到ProgID键,此插图的示例值可能是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,然后检查ProgID键的shell子键以获取默认动词,然后检查\shell\verb\command获得启动程序的路径。

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

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

+0

Regedit吓了我一下大声笑。谢谢您的帮助! – Cyclone 2009-10-13 15:13:22

相关问题