【问题标题】:Get all the supported extension list from windows从 windows 获取所有支持的扩展名列表
【发布时间】:2019-07-18 12:25:08
【问题描述】:

我有一个要求,我需要从 Windows 操作系统获取所有受支持的扩展。现在有不同的 Windows 版本提供不同的已知扩展名(取决于他们安装的应用程序),我需要一个脚本/代码,使用它可以从操作系统中获取所有已知的扩展名。

【问题讨论】:

  • 本题排名负数的原因是什么??
  • Stackoverflow 不是免费的编程服务。这就是人们投票反对你的原因。您应该发布一些代码,这会给您带来问题。见stackoverflow.com/help/how-to-ask
  • 你很可能被否决了,因为你没有展示任何你自己的代码,这反映了你没有付出任何努力。让别人为你做你的工作不是这个网站的精神,人们不喜欢它。

标签: c# python .net windows powershell


【解决方案1】:

我不知道任何特定的 API,但最终这些数据存储在 Registery 中。对于这个领域,我会向您指出这篇 MSDN 文章,其中包含有关该主题的更多信息:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/630ed1d9-73f1-4cc0-bc84-04f29cffc13b/what-registry-keys-are-responsible-for-file-extension-association?forum=netfxbcl

不过,有几点需要考虑:

由于程序在做我只能描述为“扩展战争”的事情,因此与扩展相关的程序现在留给用户选择。所以写访问会很棘手。

另一个缺点是,不再存在简单的 1:1 关系。 可以处理此扩展的每个程序都将在 Windows 中注册。实际使用的选项之一现在取决于用户。不幸的是,我不知道这如何改变注册表中的底层数据结构。或者其他选项的存储位置。

【讨论】:

  • 不要忘记,根据定义,扩展不必由任何东西处理。一个示例是通用 dat 或 bin 文件。这些可能只能由创建它的应用程序读取和写入。最初的问题可以回答为“Windows 支持文件扩展名”。
  • 这是有帮助的克里斯托弗 :)。我只需要知道操作系统的已知扩展,映射不是我关心的。谢谢
  • @KushagraMisra:你真的需要扩展,还是只需要 Windows 来对特定文件进行标准处理(比如在默认浏览器中打开它)?因为后面的部分更容易。在运行对话框(或 Process.Run() 函数)中打出绝对路径的那一刻,Windows 将根据其设置决定如何处理它 - 使用 Extension 或 Protocoll 来决定处理程序,然后选择默认操作在那个文件上。
  • @KushagraMisra 您将必须启动您感兴趣的每个操作系统的虚拟机并转储该列表。这样,您还将考虑补丁等。
  • @Seth:我认为他的目标是在运行时检索这些值对它们进行处理。究竟那个“东西”是什么,尚不清楚。在这种情况下,像往常一样,这可能是一个 XY 问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 2014-01-18
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
相关资源
最近更新 更多