Как читать установленные обновления (Просмотр установленных обновлений) из реестра на Vista или 7 - PullRequest
0 голосов
/ 19 февраля 2012

Я могу прочитать список установленных приложений из реестра:

@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" 

и на Vista и 7

@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"

Но в Vista, когда я нажимаю Просмотр установленных обновлений, отображается список обновлений. Как прочитать этот список обновлений из реестра? В этом обновлении есть Internet Explorer, и я должен прочитать его тоже. Ключ @"SOFTWARE\Wow6432Node\Microsoft\Updates" содержит только три обновления, но в списке в Панели управления -> Программы и компоненты есть больше приложений и обновлений. Как прочитать их все из реестра?

Спасибо

1 Ответ

1 голос
/ 19 февраля 2012

Использование WMI - правильный подход к проблеме.В частности, вам нужен Win32_QuickFixEngineering класс .

Это должно прекрасно работать в Windows Vista.Ваша проблема связана с тем, что начиная с Windows Vista обновления, установленные компонентным обслуживанием (CBS), не отображаются в реестре.

Пример кода VBScript:

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 "Description: " _
        & objQuickFix.Description
    Wscript.Echo "Hotfix ID: " & objQuickFix.HotFixID
Next

Поиск Google показывает, что какой-то человек уже написал полный VBScript для получения этой информации.Он даже форматирует вывод в виде прекрасного HTML-файла.

...