Как проверить, что 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 когда-либо станет частью пакета обновления или накопительного пакета, который может сообщать о ложных отрицаниях