【发布时间】:2012-09-07 07:38:01
【问题描述】:
以前,如何查询安装在Windows系统上的修补程序列表是discussed,建议使用WMI和Win32_QuickFixEngineering类提供信息。但是MSDN 表示,从 Vista 开始,这个特定的类只返回修补程序,而不是通过其他方式安装的更新。
An older question 讨论了使用这个类来获取安装的更新,表明作者也不满意使用它,因为我上面描述的限制。不幸的是,正如对已接受答案的评论所指出的那样,使用 Windows 更新代理 API 的替代解决方案仍会指示已安装修补程序,即使它随后被删除(它正在查询安装历史记录,而不是当前安装的更新) .
有人知道如何在 C# 中(通过 WMI 或其他 API)获取系统上安装的更新和修补程序的完整列表,其中不排除可能安装更新的某些方式,并且不会返回随后被删除的更新?从本质上讲,我使用的数据集与“查看已安装的更新”窗格下的“程序和功能”中可用的数据集相同。
抱歉,如果本应针对之前查看此问题的任何一个链接问题进行讨论,但以我目前的声誉,我可以为这两个问题做出贡献的唯一方法是提交一个新的答案,这绝对不是提出诸如此类的进一步问题的正确方法。
谢谢!
【问题讨论】:
-
在命令行尝试 systeminfo.exe。
-
既然您提出了
systeminfo.exe,wmic qfe get Hotfixid是从控制台获取信息的更简单方法,或者wmic qfe提供了更完整的摘要。但是,我希望能够以编程方式访问此信息。如果没有更完整的注册表或基于 API 的列表,我可能会求助于解析终端的输出。 -
谢谢,但您应该注意这是我上面问题中的第三个链接,那里讨论的方法的问题在原始问题和我的摘要中突出显示。
-
我尝试在 C++ 中使用Windows Update Agent API 来检索已安装的更新。 WUA API 有助于通过编程检索数据。我认为它也应该在 C# 中得到支持,但我从未在 C# 中尝试过。我还在努力寻找 WMIC QFE GET 和 WUA API 之间的最佳方式。如果您有任何信息,请添加您的 cmets。
标签: c# windows wmi windows-update hotfix