我正在尝试打开与'txt'文件相关联的编辑器 - 虽然这很简单,我的文件实际上并没有 txt
扩展名,所以我不能只是ShellExecute
它,我必须手动找到相关的程序。
要做到这一点,我一直在尝试使用Shell的IApplicationAssociationRegistration::QueryCurrentDefault
COM方法,但是它返回一个ProgId,这对我来说是无用的。如何将其映射到EXE?我正在使用C#,但它看起来并不相关。
编辑:下面链接的方法,您直接访问注册表在所有情况下都不起作用。正确的方法是上面的,但我需要下一步 - 如何获取返回的ProgId并获取相关的程序?
答案 0 :(得分:7)
要执行一个文件,就好像它是另一种类型的文件call ShellExecute
and set the the lpClass
member of the SHELLEXECUTEINFO
structure to the progid you wish the file were。
这样做很重要,因为文本文件的默认处理程序不一定是带命令行的程序。可能是a DDE server或drop target或a context menu handler或delegated execution handler。
答案 1 :(得分:-3)
可悲的是,你必须使用注册表。这就是registration works以及它在Windows中的记录方式。该链接解释了您可以预期的所有不同条目,如何将条目转换为exe路径,以及链接到底部的界面。