C#查询软件更新历史记录

时间:2015-07-28 08:34:05

标签: c# windows com registry

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

通过查询注册表,我已设法获取有关安装了哪些软件以及它们是哪些版本的信息。但是,在确定安装了哪些补丁时,我有点难过。

我知道如果我去Control Panel -> Programs -> View installed updates我可以看到我为这些软件安装的补丁(具体来说,它给了我确切的补丁号码 - 即补丁21)。所以,我想要类似的东西。我找到了WUApiLib,并认为这将是我的问题的答案,但当我查询更新历史记录时,所有返回的是Microsoft,OS,Visual Studio等的Microsoft更新列表。没有提到补丁我适用于我们的软件。

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

1 个答案:

答案 0 :(得分:1)

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

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

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