Verwenden von WUA zum Ermitteln des Installationsstatus von Windows-Updates
Zusammenfassung
Verwenden Sie WUA, um nach Updates (in KB) zu suchen, die unter dem derzeit verwendeten Windows installiert sind.
Betriebsumgebung
Umgebung für die Betriebsprüfung
Windows-Version |
|
.NET Framework-Version |
|
Systemvoraussetzungen erforderlich
Windows-Version |
|
.NET Framework-Version |
|
Substanz
Über dieses Beispiel
Das Ziel dieses Beispiels besteht darin, die KB zu bestimmen, die unter Windows installiert ist, und der Zweck ist fast derselbe wie "Verwenden von WMI zum Bestimmen des Installationsstatus von Windows-Updates". Dieses Beispiel wird jedoch mit "WUA" anstelle von WMI überprüft.
Die KB-Beschreibung ist unter "Verwenden Sie WMI, um herauszufinden, wie Windows-Updates installiert werden" beschrieben, also überprüfen Sie dort.
Was ist WUA?
WUA steht für "Windows Update Agent" und ist ein Satz von COM-Schnittstellen, die den Zugriff auf Windows Update und Windows Server Update Services (WSUS) ermöglichen. Sie können damit feststellen, welche KB unter Windows installiert ist.
Eine detaillierte Erläuterung von WUA und Programmierung mit WUA finden Sie unter den folgenden Links:
- Windows Update-Agent-API
- Gibt es eine Möglichkeit, eine Liste aller Updates zu erhalten, die meinem Computer hinzugefügt wurden?
- IUpdateSearcher::Suchmethode
Programme, die nach dem KB-Installationsstatus suchen
Hinzufügen von Verweisen (C#)
Um WUA verwenden zu können, müssen Sie von COM aus auf die WUAPI 2.0-Typbibliothek verweisen.
Klicken Sie für C#-Projekte im Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und wählen Sie Verweise hinzufügen aus.
Wenn das Dialogfeld Verweis hinzufügen angezeigt wird, wählen Sie auf der Registerkarte COM die Option WUAPI 2.0-Typbibliothek aus, und klicken Sie auf die Schaltfläche OK.
OK, wenn "WUApiLib" zu den Referenzeinstellungen des Projektmappen-Explorers hinzugefügt wird.
Hinzufügen eines Verweises (VB.NET)
Klicken Sie zum VB.NET im Projektmappen-Explorer mit der rechten Maustaste auf Mein Projekt, und wählen Sie Öffnen aus.
Wenn die Eigenschaften geöffnet werden, klicken Sie auf der Registerkarte auf der linken Seite auf "Durchsuchen" und rechts auf die Schaltfläche Hinzufügen. Wie in C # wird das Dialogfeld Verweis hinzufügen angezeigt, also wählen Sie "WUAPI 2.0 Type Library" von der Registerkarte "COM" und klicken Sie auf die Schaltfläche OK.
Wenn Sie zum vorherigen Bildschirm zurückkehren und "WUAPI 2.0 Type Library" zur mittleren Liste hinzufügen, ist dies in Ordnung.
Lassen Sie uns auch "WUApiLib" aus der Liste unten überprüfen, um die Beschreibung des Namespace im Programm wegzulassen.
Szene
Der in diesem Beispiel verwendete Bildschirm ist ein einfacher Bildschirm mit einer Ausführungsschaltfläche zum Überprüfen des Installationsstatus der KB und einem Textfeld, in dem die Ergebnisse angezeigt werden.
Ich mache es in WPF, aber derselbe Bildschirm ist in Windows Form konfigurierbar.
Programm
C UpdateSession
# fügt ""using WUApiLib;
am Anfang des Codes hinzu, um die Beschreibung von Klassen und anderen Namespaces zu reduzieren. In VB.NET haben Sie angegeben, dass der Namespace in den Projekteigenschaften importiert werden soll, damit Sie nichts Besonderes schreiben müssen, aber wenn Sie dies nicht getan haben, müssen Sie ".Imports WUApiLib
* Sowohl in C# als auch in VB.NET, wenn alle Klassennamen aus einem Namespace wie "WUApiLib.UpdateSession
geschrieben werden, ist die obige Spezifikation nicht erforderlich.
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」追加
Unten sehen Sie den Code, der die installierte KB durchsucht und auflistet.
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()
Der Inhalt ist wie kommentiert.
IUpdateSearcher.Search
Sie können ändern, was Sie durch die Zeichenfolge erhalten, die Sie als Argument der Methode angeben. Weitere Informationen finden Sie unter IUpdateSearcher::Search Method.