例如,对于“.xls”,我想获得答案“Microsoft Office Excel”,或者用户用作打开.xls文件的默认程序。
我已经确定这并不像进入HKEY_CLASSES_ROOT并挑选出来那么简单,因为它也可能在HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER或HKEY_USERS中指定。
也许我所需要知道的只是Windows用于确定此类问题的排序以及如何访问每个位置。当然,使用Windows API调用完成此任务最理想。
这与以下问题类似: 如何使用Delphi从文件扩展名获取图标和描述? 但是该问题仅回答了如何获取扩展名的描述和关联程序的图标。我找不到一种方法来将其扩展为还可以获取关联程序的名称。
我正在使用Delphi 2009,并需要适用于Windows XP、Vista和7的解决方案。
谢谢你们所有人的答案。
看起来我的信念是,可执行文件的名称实际上并未记录在注册表中。在广泛查找可提供名称的Windows API之后,我找不到其中任何一款。
我认为Mef的答案是最好的。从程序可执行文件中获取可执行文件的名称。
后续:我发现David Hefferman对“如何使用默认文本编辑器打开文件?”的回答提供了一个很好的解决方案,可以使用不同扩展名的默认程序打开一个程序。