我正在尝试打开与’txt’文件相关联的编辑器 – 虽然这很简单,我的文件实际上没有txt扩展名,所以我不能只是
ShellExecute它,我必须手动找到相关的程序.
为此,我一直在尝试使用Shell的IApplicationAssociationRegistration::QueryCurrentDefault
COM方法,但它返回一个ProgId,这对我来说不是没用.如何将其映射到EXE?我正在使用C#,但似乎并不相关.
编辑:下面链接的方法,您直接访问注册表不再适用于所有情况.正确的方法是上面的,但我需要下一步 – 如何获取返回的ProgId并获取相关的程序?
解决方法
要执行一个文件,就好像它是另一种类型的文件,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.