Използвайте WUA, за да определите състоянието на инсталиране на актуализации на Windows

Страницата се актуализира :
Дата на създаване на страница :

резюме

Използвайте WUA, за да проверите за актуализации (в КБ), които са инсталирани на Windows, който използвате в момента.

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

Операционна среда

Среда за проверка на операция

Версия на Windows
  • Крайната стойност на Windows 7
.NET Рамкова версия
  • 4

Изисквания към системата, необходими

Версия на Windows
  • Windows 7 (други среди непотвърдени)
.NET Рамкова версия
  • 4.0 (не са потвърдени други среди)

вещество

За тази проба

Целта на тази проба е да се определи КБ, която е инсталирана на Windows, и целта е почти същата като "Използвайте WMI, за да определите състоянието на инсталиране на актуализации на Windows." Тази проба обаче се проверява с помощта на "WUA" вместо WMI.

Описанието на КБ е описано в "Използвайте WMI, за да разберете как се инсталират актуализациите на Windows", така че проверете там.

Какво представлява WUA?

WUA означава "Windows Update Agent" и е набор от COM интерфейси, които позволяват достъп до Windows Update и Услуги за актуализиране на Windows Server (WSUS). Можете да го използвате, за да определите коя КБ е инсталирана на Windows.

За подробно обяснение на WUA и програмиране с WUA вижте следните връзки:

Програми, които търсят състояние на инсталиране на КБ

Добавяне на препратки (C#)

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

За да използвате WUA, трябва да направите препратка към библиотеката с видове WUAPI 2.0 от COM.

За c# проекти щракнете с десния бутон препратки от Solution Explorer и изберете Добавяне на препратки.

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

Когато се появи диалоговият прозорец Добавяне на препратка, изберете WUAPI 2.0 Type Library от раздела COM и щракнете върху OK бутон.

OK, ако "WUApiLib" се добавя към настройките за препратка на Solution Explorer.

Добавяне на препратка (VB.NET)

My Project から開くを選択

За VB.NET щракнете с десния бутон върху Моят проект от Solution Explorer и изберете Отвори.

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

Когато свойствата се отворят, кликнете върху "Преглед" от раздела вляво, щракнете върху бутона Добави вдясно. Както в C#, се показва диалоговият прозорец Добавяне на препратка, така че изберете "WUAPI 2.0 Type Library" от раздела "COM" и кликнете върху OK бутон.

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

Ако се върнете към предишния екран и добавите "WUAPI 2.0 Type Library" към средния списък, то е OK.

Също така, нека проверим "WUApiLib" от списъка по-долу, за да пропуснат описанието на пространството на имената в програмата.

място

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

Екранът, използван в тази проба, е прост екран с бутон за изпълнение, за да проверите състоянието на инсталацията на КБ и текстово поле, което показва резултатите.

Правя го в WPF, но същият екран е конфигурируем в Windows Form.

програма

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」追加

По-долу е кодът, който търси и изброява инсталираната KB.

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::Метод на търсене.