打开文件就好像它是一个文本文件(即使它的扩展名不是.txt)

时间:2012-02-03 00:04:31

标签: windows shell

我正在尝试打开与'txt'文件相关联的编辑器 - 虽然这很简单,我的文件实际上并没有 txt扩展名,所以我不能只是ShellExecute它,我必须手动找到相关的程序。

要做到这一点,我一直在尝试使用Shell的IApplicationAssociationRegistration::QueryCurrentDefault COM方法,但是它返回一个ProgId,这对我来说是无用的。如何将其映射到EXE?我正在使用C#,但它看起来并不相关。

编辑:下面链接的方法,您直接访问注册表在所有情况下都不起作用。正确的方法是上面的,但我需要下一步 - 如何获取返回的ProgId并获取相关的程序?

2 个答案:

答案 0 :(得分:7)

要执行一个文件,就好像它是另一种类型的文件call ShellExecute and set the the lpClass member of the SHELLEXECUTEINFO structure to the progid you wish the file were

这样做很重要,因为文本文件的默认处理程序不一定是带命令行的程序。可能是a DDE serverdrop targeta context menu handlerdelegated execution handler

答案 1 :(得分:-3)

可悲的是,你必须使用注册表。这就是registration works以及它在Windows中的记录方式。该链接解释了您可以预期的所有不同条目,如何将条目转换为exe路径,以及链接到底部的界面。