c#查询软件更新历史

本文关键字:历史 更新 软件 查询 | 更新日期: 2023-09-27 18:04:58

我正在编写一个c#控制台应用程序,它收集有关机器的数据并将其写入外部数据库。必须收集的信息之一是有关已安装软件的信息。有一组特定的软件,我们想知道。具体是安装了哪些,安装了哪些版本,以及它们应用了哪些补丁。

我已经通过查询注册表获得了关于安装了哪些软件以及它们是哪些版本的信息。然而,当要确定安装了哪些补丁时,我有点难住了。

我知道如果我进入Control Panel -> Programs -> View installed updates,我可以看到我为这些软件安装的补丁(具体来说,它给了我确切的补丁编号-即补丁21)。所以,我想要类似的东西。我找到了WUApiLib,并认为这将是我的问题的答案,但是当我查询更新历史时,返回的是微软对操作系统,. net, Visual Studio等的更新列表。没有提到我给我们的软件打了补丁。

我不是很熟悉补丁是如何工作的,但我相信补丁使用msp文件格式,所以我认为信息应该由Windows记录在某个地方。控制面板如何得到它?我在哪里可以买到?HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall下的注册表项根本没有提到补丁。

c#查询软件更新历史

所以,经过一番挖掘,我发现注册表的另一部分列出了我需要的所有信息。

HKLM'SOFTWARE'Microsoft'Windows'CurrentVersion'Installer'UserData'S-1-5-18'Products

包含已安装软件的名称和版本(<GUID>'InstallProperties下)以及为每个软件安装的补丁(<GUID>'Patches下)