Программно получить список всех установленных обновлений в Windows

Я хочу программно получить список всех установленных КБ. Это может быть код Python, WinAPI (который я буду вызывать из python), запуск другого процесса и анализ его выходных данных и т. Д. Меня интересуют обновления безопасности, мне все равно, возвращаются ли другие обновления или нет. Однако мне нужны обновления и для программного обеспечения, а не только для Windows - всего, что отображается в окне "Установленные обновления" панели управления. Также важно, что этот код будет работать на всех версиях Windows, а не только на одной версии (я не против иметь в коде if-else с различным поведением для разных версий Windows - просто важно, чтобы в конечном итоге он работал),

Я старался wmic qfe, systeminfo и PowerShell's get-hotfixВсе они возвращают только обновления ОС.

У меня есть Windows 10, и я не могу найти ни одного места в реестре или файловой системе, где все КБ перечислены вместе. Не удалось понять смысл вывода Procmon (после открытия записи "Установленные обновления") - слишком большой и недостаточно сфокусированный. Кажется, что разные обновления перечислены в разных местах, но я ничего не мог понять, как расширить / обобщить.

РЕДАКТИРОВАТЬ: Я нашел этот код: https://codereview.stackexchange.com/questions/135648/find-installed-and-available-windows-updates

Я попытался запустить его на своем компьютере, и он обнаружил несколько килобайт, которые не отображаются ни в командах командной строки, которые я выполнял, ни в "Установленных обновлениях". С другой стороны, есть также KB, которые там не появляются, но появляются в других местах.

Спасибо!

1 ответ

Проблема с qfe заключается в том, что в более новых версиях Windows есть обновления для компонентов, не связанных с CBS, поэтому wmic path Win32_QuickFixEngineering не покажу их.

Уловка состоит в том, чтобы использовать COMObject в системе обновления. Я написал небольшой пакет, который выполняет свою работу

Установить с помощью

      pip install windows_tools.updates

Использовать с

      from windows_tools.updates import get_windows_updates()

for update in get_windows_updates():
    print(update)

Вы можете фильтровать повторяющиеся записи (например, обновления определений AV), используя get_windows_updates(filter_multiple=True)

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