Brug WUA til at bestemme installationsstatus for Windows-opdateringer
resumé
Brug WUA til at søge efter opdateringer (i KB), der er installeret på det Windows, du bruger i øjeblikket.
Driftsmiljø
Miljø til kontrol af drift
Windows-version |
|
.NET Framework-version |
|
Systemkrav påkrævet
Windows-version |
|
.NET Framework-version |
|
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:
- Windows Update Agent API
- Er der en måde at få en liste over alle de opdateringer, der er blevet føjet til min computer?
- IUpdateSearcher::Søgemetode
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.
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)
For VB.NET skal du højreklikke på Mit projekt fra Solution Explorer og vælge Åbn.
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.
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
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.Search
Du 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.