Как проверить, что Windows QFE/patch была установлена ​​из C#?

Как лучше всего в C# определить, установлен ли данный QFE/patch?

2 ответа

Решение

Используйте WMI и проверьте перечисление Win32_QuickFixEngineering.

Из TechNet:

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 - это то, что вы хотите проверить.

Вот вывод на моей системе:

    Код исправления: 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)
    Код исправления: KB947864-IE7
    Описание: Исправление для Windows Internet Explorer 7 (KB947864)
    ID исправления: KB950759-IE7
    Описание: Обновление безопасности для Windows Internet Explorer 7 (KB950759)
    Код исправления: KB953838-IE7
    Описание: Обновление безопасности для Windows Internet Explorer 7 (KB953838)
    ID исправления: MSCompPackV1
    Описание: Microsoft Compression Client Pack 1.0 для Windows XP
    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)

Самый надежный способ - определить, на какие файлы влияет QFE, и использовать System.Diagnostics.FileVersionInfo.GetVersionInfo(path) на каждом файле и сравните номера версий.

редактировать: я думаю, что есть способ проверить информацию об удалении в реестре, но если QFE когда-либо станет частью пакета обновления или накопительного пакета, который может сообщать о ложных отрицаниях

Другие вопросы по тегам