【发布时间】:2020-02-23 04:10:13
【问题描述】:
我需要获取当前与当前用户的文件扩展名关联的程序的名称。如果您右键单击文件并选择属性,那么我需要的是“打开方式”行右侧的程序名称。
例如对于“.xls”,我希望能够得到答案“Microsoft Office Excel”,或者用户拥有的任何程序作为他们打开 .xls 文件的默认程序。
我已经确定它不像只进入 HKEY_CLASSES_ROOT 并选择它那么容易,因为它也可能在 HKEY_LOCAL_MACHINE 或 HKEY_CURRENT_USER 或 HKEY_USERS 中指定。
也许我只需要知道 Windows 使用的排序顺序来确定这一点以及如何到达每个位置。当然,执行此操作的 Windows API 调用将是理想的。
这是一个类似的问题: How to get icon and description from file extension using Delphi? 但该问题仅回答了如何获取扩展程序的描述和关联程序的图标。我找不到一种方法来扩展它以获取相关程序的名称。
我使用的是 Delphi 2009,需要一个适用于 Windows XP、Vista 和 7 的解决方案。
谢谢大家的回答。
看来我相信可执行文件的名称毕竟不在注册表中。在四处寻找可以给出名称的 Windows API 之后,我找不到。
我认为 Mef 的回答是最好的。从程序的可执行文件中包含的信息中获取可执行文件的名称。
跟进:我发现David Hefferman's answer to "How do I open a file with the default text editor?" 提供了一个很好的解决方案,可以使用默认程序为不同的扩展程序打开一个程序。
【问题讨论】:
标签: windows delphi registry file-type file-association