我需要获取当前与当前用户的文件扩展名关联的程序的名称。如果您右键单击文件并选择属性,那么我需要的是“打开方式”行右侧的程序名称。
例如对于“.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 对“如何使用默认文本编辑器打开文件?”的回答。为使用不同扩展的默认程序打开一个程序提供了一个极好的解决方案。