设置文件关联

时间:2011-12-30 20:56:57

标签: delphi

我试图让Windows识别我的程序的文件扩展名,但没有像往常一样运气。

这就是我正在做的事情,请告知我在哪里或我做错了什么 - 我想我的注册表位置或命名设置可能不正确:

样本名称

MyProg.exe = The name of the program.
%InstallPath% = Where the program will be installed.
.ext1 = 1st File Extension.
.ext2 = 2nd File Extension.
.ext3 = 3rd File Extension.

注册表位置(我已添加到的位置)

HKEY_CLASSES_ROOT\.ext1
HKEY_CLASSES_ROOT\.ext2
HKEY_CLASSES_ROOT\.ext3

HKEY_CLASSES_ROOT\.ext1\DefaultIcon,2
HKEY_CLASSES_ROOT\.ext1\shell\open\command\%InstallPath%\MyProg.exe %1

之后我有点失落:(

文件图片

我已经从XE IDE Resources Menu添加了3个图标文件,并将它们命名为2,3,4。我想如果我有一个名为1的图标,它将覆盖项目图标?

我希望在从未见过我的程序的机器上使用Inno Setup等安装程序(看看安装是否完美无缺)之前,让这些工作正常。

我找不到任何易于遵循的指南:(

1 个答案:

答案 0 :(得分:5)

您正在设置注册表项错误。您需要将文件扩展名与ProgID关联,然后将ProgID与您的应用相关联,如下所示:

HKEY_CLASSES_ROOT\.ext1 
(Default) = "ext1File"

HKEY_CLASSES_ROOT\.ext2 
(Default) = "ext2File"

HKEY_CLASSES_ROOT\.ext3 
(Default) = "ext3File"

HKEY_CLASSES_ROOT\ext1File\DefaultIcon
(Default) = "%InstallPath%\MyProg.exe,2" 

HKEY_CLASSES_ROOT\ext1File\shell\open\command
(Default) = ""%InstallPath%\MyProg.exe" "%1""

HKEY_CLASSES_ROOT\ext2File\DefaultIcon
(Default) = "%InstallPath%\MyProg.exe,3" 

HKEY_CLASSES_ROOT\ext2File\shell\open\command
(Default) = ""%InstallPath%\MyProg.exe" "%1""

HKEY_CLASSES_ROOT\ext3File\DefaultIcon
(Default) = "%InstallPath%\MyProg.exe,4" 

HKEY_CLASSES_ROOT\ext3File\shell\open\command
(Default) = ""%InstallPath%\MyProg.exe" "%1""

阅读以下文档以获取更多详细信息:

File Types and File Associations

仅供参考,您不应直接向HKEY_CLASSES_ROOT写入数据。写入HKEY_CURRENT_USER\Software\Classes和/或HKEY_LOCAL_MACHINE\Software\Classes,取决于您是希望按用户还是机器全局注册。请阅读以下文档,了解更多详细信息。

HKEY_CLASSES_ROOT Key

Merged View of HKEY_CLASSES_ROOT