Використовуйте WUA для визначення стану установки оновлень Windows

Сторінка оновлюється :
Дата створення сторінки :

зведення

Використовуйте WUA для перевірки наявності оновлень (в КБ), які встановлені на Windows, яку ви зараз використовуєте.

KB がインストールされている一覧を表示しています。

Операційне середовище

Середовище перевірки роботи

Версія для Windows
  • Windows 7 Ultimate
Версія фреймворку .NET
  • 4

Необхідні системні вимоги

Версія для Windows
  • Windows 7 (інші непідтверджені середовища)
Версія фреймворку .NET
  • 4.0 (інші середовища не підтверджені)

речовина

Про цей зразок

Мета даного зразка - визначити КБ, яке встановлено на Windows, а мета практично така ж, як і "Використовувати WMI для визначення стану установки оновлень Windows". Однак цей зразок перевіряється за допомогою "WUA" замість WMI.

Опис бази знань описано в розділі "Використання WMI, щоб дізнатися, як інсталюються оновлення Windows", тому перевірте там.

Що таке WUA?

WUA розшифровується як «Агент оновлення Windows» і являє собою набір COM-інтерфейсів, що дозволяють отримати доступ до Windows Update і Windows Server Update Services (WSUS). Ви можете використовувати його, щоб визначити, яке КБ встановлено на Windows.

Детальне пояснення WUA та програмування з WUA дивіться за наступними посиланнями:

Програми, які шукають стан інсталяції КБ

Додавання посилань (C#)

「参照設定」を右クリックして「参照の追加」を選択

Щоб використовувати WUA, ви повинні посилатися на бібліотеку типів WUAPI 2.0 від COM.

Для проектів C# клацніть правою кнопкою миші «Посилання» з «Провідника рішень» і виберіть «Додати посилання».

参照の追加ダイアログで WUAPI 2.0 Type Library を選択して追加しています

Коли з'явиться діалогове вікно Додавання посилання, виберіть бібліотека типів WUAPI 2.0 на вкладці COM і натисніть кнопку OK.

Добре, якщо "WUApiLib" додано до довідкових налаштувань Solution Explorer.

Додавання посилання (VB.NET)

My Project から開くを選択

Для VB.NET клацніть правою кнопкою миші пункт Мій проект у Провіднику рішень і виберіть команду Відкрити.

プロジェクトのプロパティから参照タブを選択し WUAPI 2.0 Type Library の参照を追加しています

Коли властивості відкриються, натисніть "Огляд" з вкладки зліва, натисніть кнопку Додати праворуч. Як і в C#, відображається діалогове вікно «Додати посилання», тому виберіть «Бібліотека типів WUAPI 2.0» на вкладці «COM» і натисніть кнопку OK.

WUAPI 2.0 Type Library が追加されていることを確認し、WUApiLib 名前空間をインポートします

Якщо ви повернетеся до попереднього екрана і додасте "Бібліотеку типів WUAPI 2.0" до середнього списку, це нормально.

Крім того, давайте відзначимо "WUApiLib" зі списку нижче, щоб пропустити опис простору імен в програмі.

Сцени

KB チェック実行ボタンと検索結果一覧を表示するためのテキストボックスを配置

Екран, який використовується в цьому зразку, являє собою простий екран з кнопкою виконання для перевірки стану установки КБ і текстовим полем, що відображає результати.

Я роблю це в WPF, але той самий екран налаштовується у формі Windows.

програма

C UpdateSession # додає ""using WUApiLib; на початок коду, щоб зменшити опис класів та інших просторів імен. У VB.NET ви вказали імпортувати простір імен у властивостях проекту, тому нічого особливого писати не потрібно, але якщо у вас цього немає, потрібно додати ".Imports WUApiLib

* Як в C#, так і в VB.NET, якщо всі імена класів написані з такого простору імен, як ",WUApiLib.UpdateSession наведена вище специфікація не є обов'язковою.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using WUApiLib; // 参照から「COM」より「WUAPI 2.0 Type Library」追加

Нижче наведено код, який шукає та перераховує встановлений КБ.

C #

this.ResultTextBox.Text = "";

// アップデートセッション 作成
UpdateSession us = new UpdateSession();

// アップデート検索インスタンス作成
IUpdateSearcher searcher = us.CreateUpdateSearcher();

// 「インストールされているもの」「ソフトウェア」で検索し、結果を取得
ISearchResult result = searcher.Search("IsInstalled=1 and Type='Software'");

StringBuilder builder = new StringBuilder();

// アップデート一覧からタイトル一覧を取得する。
foreach (IUpdate u in result.Updates)
{
  builder.AppendLine("[" + u.Title + "]");
}

builder.AppendLine();

// アップデート一覧から KB の番号だけ取得する。
foreach (IUpdate u in result.Updates)
{
  foreach (string str in u.KBArticleIDs)
  {
    builder.AppendLine(str);
  }
}

// 取得した KB 一覧をセット
this.ResultTextBox.Text = builder.ToString();

VB.NET

Me.ResultTextBox.Text = ""

' アップデートセッション 作成
Dim us As New UpdateSession()

' アップデート検索インスタンス作成
Dim searcher As IUpdateSearcher = us.CreateUpdateSearcher()

' 「インストールされているもの」「ソフトウェア」で検索し、結果を取得
Dim result As ISearchResult = searcher.Search("IsInstalled=1 and Type='Software'")

Dim builder As New System.Text.StringBuilder()

' アップデート一覧からタイトル一覧を取得する。
For Each u As IUpdate In result.Updates
  builder.AppendLine("[" + u.Title + "]")
Next

builder.AppendLine()

' アップデート一覧から KB の番号だけ取得する。
For Each u As IUpdate In result.Updates
  For Each str As String In u.KBArticleIDs
    builder.AppendLine(str)
  Next
Next

' 取得した KB 一覧をセット
Me.ResultTextBox.Text = builder.ToString()

Зміст коментується.

IUpdateSearcher.SearchВи можете змінити те, що ви отримуєте за допомогою рядка, який ви вказали як аргумент методу. Для отримання додаткової інформації дивіться IUpdateSearcher::Метод пошуку.