2

c# 中确定是否已安装给定 QFE/补丁的最佳方法是什么?

4

2 回答 2

2

使用 WMI 并检查Win32_QuickFixEngineering枚举。

来自技术网:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colQuickFixes = objWMIService.ExecQuery _
    ("Select * from Win32_QuickFixEngineering")
For Each objQuickFix in colQuickFixes
    Wscript.Echo "Computer: " & objQuickFix.CSName
    Wscript.Echo "Description: " & objQuickFix.Description
    Wscript.Echo "Hot Fix ID: " & objQuickFix.HotFixID
    Wscript.Echo "Installation Date: " & objQuickFix.InstallDate
    Wscript.Echo "Installed By: " & objQuickFix.InstalledBy
Next

HotFixID 是您要检查的内容。

这是我系统上的输出:

    修补程序 ID:KB941569
    说明:Windows XP 安全更新 (KB941569)
    修补程序 ID:KB937143-IE7
    说明:Windows Internet Explorer 7 安全更新 (KB937143)
    修补程序 ID:KB938127-IE7
    说明:Windows Internet Explorer 7 安全更新 (KB938127)
    修补程序 ID:KB939653-IE7
    说明:Windows Internet Explorer 7 安全更新 (KB939653)
    修补程序 ID:KB942615-IE7
    说明:Windows Internet Explorer 7 安全更新 (KB942615)
    修补程序 ID:KB944533-IE7
    说明:Windows Internet Explorer 7 安全更新 (KB944533)
    修补程序 ID:KB947864-IE7
    说明:Windows Internet Explorer 7 的修补程序 (KB947864)
    修补程序 ID:KB950759-IE7
    说明:Windows Internet Explorer 7 安全更新 (KB950759)
    修补程序 ID:KB953838-IE7
    说明:Windows Internet Explorer 7 安全更新 (KB953838)
    修补程序 ID:MSCompPackV1
    说明:适用于 Windows XP 的 Microsoft Compression Client Pack 1.0
    修补程序 ID:KB873339
    说明:Windows XP 修补程序 - KB873339
    修补程序 ID:KB885835
    说明:Windows XP 修补程序 - KB885835
    修补程序 ID:KB885836
    说明:Windows XP 修补程序 - KB885836
    修补程序 ID:KB886185
    说明:Windows XP 修补程序 - KB886185
    修补程序 ID:KB887472
    说明:Windows XP 修补程序 - KB887472
    修补程序 ID:KB888302
    说明:Windows XP 修补程序 - KB888302
    修补程序 ID:KB890046
    说明:Windows XP 安全更新 (KB890046)
于 2008-10-15T15:47:52.547 回答
1

最可靠的方法是确定哪些文件受 QFE 影响并System.Diagnostics.FileVersionInfo.GetVersionInfo(path)在每个文件上使用并比较版本号。

编辑:我认为还有一种方法可以检查注册表中的卸载信息,但是如果 QFE 成为可能报告误报的 Service Pack 或汇总包的一部分

于 2008-09-11T20:58:02.583 回答