C#在安装应用程序之前和之后获取文件类型

Posted

技术标签:

【中文标题】C#在安装应用程序之前和之后获取文件类型【英文标题】:C# get file types before and after install of application 【发布时间】:2016-07-22 03:22:37 【问题描述】:

我目前正在尝试获取 ALL 的文件类型关联(我知道大问题)机器上的文件类型关联,将其存储在列表中(或字典,如果这更好?)然后将其与列表进行比较已安装应用程序(新列表、新关联快照)并在新列表中输出任何差异(因此总共 3 个列表,安装前、安装后、比较列表)

对于一个示例场景:- Adobe Acrobat 与 .pdf 相关联。所以我有一个与 .pdf 作为 acrobat 的所有关联的快照。

然后我安装 Adob​​e Reader - 这需要 .pdf 关联,然后我再次运行列表,现在我在 .pdf 上有一个带有阅读器的列表

然后我可以运行比较并输出差异并将其输出为新格式(列表视图/文本文件)

我通常会提供一个代码示例,但老实说,我不知道从哪里开始 - 我环顾四周,主要是找到如何添加我不想要的 fta。

干杯

【问题讨论】:

请检查这些:***.com/questions/6609640/…, ***.com/questions/770023/… 【参考方案1】:

看看这篇代码项目文章:System File Association

作者获取包含在机器上注册的所有扩展的列表:

var allExtensions = new List<string>();
RegistryKey root = Registry.ClassesRoot;

string[] subKeys = root.GetSubKeyNames();
foreach (string subKey in subKeys) // now it's better to use Linq

    if (subKey.StartsWith("."))
    
        allExtensions.Add(subKey);
    

然后得到关联的progId:

FileAssociationInfo fa = new FileAssociationInfo(extension);
var progId = fa.ProgID; // .pdf progId is "SumatraPDF" (on my machine)

希望对你有帮助。

【讨论】:

请不要只提供链接答案。那些可能会变得陈旧。您应该将此作为评论发布或重复答案中的重要部分 @DanielHilgarth 你是对的。最好将此作为评论发布。但我没有足够的声誉:( 我似乎从这段代码中得到了一些工作,为我一直很忙的缓慢回复道歉!将标记为正确答案,非常感谢!

以上是关于C#在安装应用程序之前和之后获取文件类型的主要内容,如果未能解决你的问题,请参考以下文章

C# 泛型是引用类型还是值类型,是根据啥判断?

C# Winform 生成安装软件

C#按内容类型获取文件扩展名

如何获取文件类型名称?

获取文件类型不使用文件扩展名 c#

C#项目打开/保存文件夹/指定类型文件,获取路径(转)