2015-07-28 96 views
1

我正在编写一个C#控制台应用程序,它收集有关计算机的数据并将其写入外部数据库。需要收集的信息中有一点是关于所安装软件的信息。我们有一套我们想知道的特定软件。具体包括安装哪些版本,安装哪些版本以及应用哪些补丁。C#查询软件更新历史记录

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

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

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

回答

1

因此,经过一番挖掘后,我发现注册表的不同部分列出了我需要的所有信息。

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

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