Brug WUA til at bestemme installationsstatus for Windows-opdateringer

Side opdateret :
Dato for oprettelse af side :

resumé

Brug WUA til at søge efter opdateringer (i KB), der er installeret på det Windows, du bruger i øjeblikket.

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

Driftsmiljø

Miljø til kontrol af drift

Windows-version
  • Windows 7 Ultimate
.NET Framework-version
  • 4

Systemkrav påkrævet

Windows-version
  • Windows 7 (andre miljøer, der ikke er bekræftet)
.NET Framework-version
  • 4.0 (ingen andre miljøer bekræftet)

stof

Om denne prøve

Målet med denne prøve er at bestemme den KB, der er installeret på Windows, og formålet er næsten det samme som "Brug WMI til at bestemme installationsstatus for Windows-opdateringer." Denne prøve kontrolleres dog ved hjælp af "WUA" i stedet for WMI.

KB-beskrivelsen er beskrevet i "Brug WMI til at finde ud af, hvordan Windows-opdateringer installeres", så tjek der.

Hvad er WUA?

WUA står for "Windows Update Agent" og er et sæt COM-grænseflader, der giver adgang til Windows Update og Windows Server Update Services (WSUS). Du kan bruge den til at bestemme, hvilken KB der er installeret på Windows.

For en detaljeret forklaring af WUA og programmering med WUA, se følgende links:

Programmer, der søger efter KB-installationsstatus

Tilføjelse af referencer (C#)

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

For at bruge WUA skal du henvise til WUAPI 2.0 Type Library fra COM.

For C#-projekter skal du højreklikke på Referencer fra Løsningsoversigt og vælge Tilføj referencer.

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

Når dialogboksen Tilføj reference vises, skal du vælge WUAPI 2.0 Type Library fra fanen COM og klikke på knappen OK.

OK, hvis "WUApiLib" føjes til referenceindstillingerne i Solution Explorer.

Tilføj en reference (VB.NET)

My Project から開くを選択

For VB.NET skal du højreklikke på Mit projekt fra Solution Explorer og vælge Åbn.

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

Når egenskaberne åbnes, skal du klikke på "Gennemse" fra fanen til venstre, klikke på knappen Tilføj til højre. Som i C# vises dialogboksen Tilføj reference, så vælg "WUAPI 2.0 Type Library" fra fanen "COM", og klik på knappen OK.

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

Hvis du vender tilbage til den forrige skærm og tilføjer "WUAPI 2.0 Type Library" til den midterste liste, er det OK.

Lad os også tjekke "WUApiLib" fra listen nedenfor for at udelade beskrivelsen af navnerummet i programmet.

scene

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

Skærmen, der bruges i dette eksempel, er en simpel skærm med en udførelsesknap til at kontrollere installationsstatus for KB og et tekstfelt, der viser resultaterne.

Jeg gør det i WPF, men den samme skærm kan konfigureres i Windows Form.

program

C UpdateSession # tilføjer ""using WUApiLib; til begyndelsen af koden for at reducere beskrivelsen af klasser og andre navneområder. I VB.NET har du angivet at importere navneområdet i projektegenskaberne, så du behøver ikke at skrive noget særligt, men hvis du ikke har gjort det, skal du tilføje ".Imports WUApiLib

* I både C# og VB.NET, hvis alle klassenavne er skrevet fra et navneområde som ",WUApiLib.UpdateSession er ovenstående specifikation ikke nødvendig.

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

Nedenfor er koden, der søger og viser den installerede 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()

Indholdet er som kommenteret.

IUpdateSearcher.SearchDu kan ændre, hvad du får ved hjælp af den streng, du angiver som argument for metoden. Du kan finde flere oplysninger under IUpdateSearcher::Søgemetode.