【问题标题】:Opening a file as if it were a text file (even though its extension is not .txt)像打开一个文本文件一样打开一个文件(即使它的扩展名不是 .txt)
【发布时间】:2012-02-25 16:09:04
【问题描述】:

我正在尝试打开与 'txt' 文件关联的编辑器 - 但问题是,我的文件实际上没有 txt 扩展名,所以我不能只 @ 987654324@吧,我得手动找相关的程序。

为此,我一直在尝试使用 Shell 中的 IApplicationAssociationRegistration::QueryCurrentDefault COM 方法,但它返回了一个 ProgId,这对我来说几乎没有用处。如何将其映射到 EXE?我正在使用 C#,但它似乎不相关。

编辑:下面链接的直接访问注册表的方法不再适用于所有情况。上面是正确的方法,但是我需要下一步——如何取返回的ProgId并获取关联的程序?

【问题讨论】:

  • 很好的发现,但从 >= Vista 开始,这些答案不正确 - 我之前尝试过这种方法,但它不起作用;根据您设置关联的方式,这将返回不正确的结果
  • 这是一种低效的方法。选择文件扩展名的唯一原因是它的关联。选择.txt,问题解决了。
  • 我无法选择文件的扩展名,它是由我无法控制的另一个应用程序生成的
  • 我最终解决了这个问题,但必须有一个正确的答案。我不敢相信 2012 年,正确的答案是在注册表中四处寻找,那是没有办法的生活。

标签: windows shell


【解决方案1】:

要像执行另一种类型的文件一样执行一个文件,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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 2015-04-19
      • 1970-01-01
      相关资源
      最近更新 更多