Какой лучший способ в С# определить, установлен ли данный QFE/patch?
Как проверить, что Windows QFE/patch был установлен из С#?
Ответ 1
Используйте 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 - это то, что вы хотите изучить.
Здесь вывод в моей системе:
Hot Fix ID: KB941569
Description: Security Update for Windows XP (KB941569)
Hot Fix ID: KB937143-IE7
Description: Security Update for Windows Internet Explorer 7 (KB937143)
Hot Fix ID: KB938127-IE7
Description: Security Update for Windows Internet Explorer 7 (KB938127)
Hot Fix ID: KB939653-IE7
Description: Security Update for Windows Internet Explorer 7 (KB939653)
Hot Fix ID: KB942615-IE7
Description: Security Update for Windows Internet Explorer 7 (KB942615)
Hot Fix ID: KB944533-IE7
Description: Security Update for Windows Internet Explorer 7 (KB944533)
Hot Fix ID: KB947864-IE7
Description: Hotfix for Windows Internet Explorer 7 (KB947864)
Hot Fix ID: KB950759-IE7
Description: Security Update for Windows Internet Explorer 7 (KB950759)
Hot Fix ID: KB953838-IE7
Description: Security Update for Windows Internet Explorer 7 (KB953838)
Hot Fix ID: MSCompPackV1
Description: Microsoft Compression Client Pack 1.0 for Windows XP
Hot Fix ID: KB873339
Description: Windows XP Hotfix - KB873339
Hot Fix ID: KB885835
Description: Windows XP Hotfix - KB885835
Hot Fix ID: KB885836
Description: Windows XP Hotfix - KB885836
Hot Fix ID: KB886185
Description: Windows XP Hotfix - KB886185
Hot Fix ID: KB887472
Description: Windows XP Hotfix - KB887472
Hot Fix ID: KB888302
Description: Windows XP Hotfix - KB888302
Hot Fix ID: KB890046
Description: Security Update for Windows XP (KB890046)
Ответ 2
Самый надежный способ - определить, на какие файлы влияет QFE, и использовать System.Diagnostics.FileVersionInfo.GetVersionInfo(path) для каждого файла и сравнить номера версий.
edit: Я думаю, что есть способ проверить информацию об удалении в реестре, но если QFE когда-либо станет частью пакета обновления или накопительного пакета, который может сообщать о ложных негативах