S programom WUA določite stanje namestitve posodobitev sistema Windows
Povzetek
Uporabite WUA za preverjanje, ali obstajajo posodobitve (v KB), ki so nameščene v sistemu Windows, ki ga trenutno uporabljate.
Operativno okolje
Okolje za preverjanje delovanja
Različica sistema Windows |
|
.NET Framework Različica |
|
Zahtevane sistemske zahteve
Različica sistema Windows |
|
.NET Framework Različica |
|
snov
O tem vzorcu
Cilj tega vzorca je določiti KB, ki je nameščena v sistemu Windows, in namen je skoraj enak kot »Uporaba WMI za določitev namestitvenega stanja posodobitev sistema Windows«. Vendar se ta vzorec preveri z uporabo "WUA" namesto WMI.
Opis zbirke podatkov je opisan v »Uporabi WMI, če želite izvedeti, kako so nameščene posodobitve sistema Windows«.
Kaj je zdravilo WUA?
WUA pomeni "Windows Update Agent" in je nabor COM vmesnikov, ki omogočajo dostop do storitev Windows Update in Windows Server Update Services (WSUS). Uporabite ga lahko za določanje, katera KB je nameščena v sistemu Windows.
Za podrobno razlago WUA in programiranje z WUA si oglejte naslednje povezave:
- API agenta za Windows Update
- Ali obstaja način, kako dobiti seznam vseh posodobitev, ki so bile dodane v moj računalnik?
- IUpdateSearcher::Način iskanja
Programi, ki iščejo stanje namestitve KB
Dodajanje sklicev (C#)
Če želite uporabljati WUA, se morate sklicevati na knjižnico tipov WUAPI 2.0 iz COM.
Za projekte C# z desno tipko miške kliknite Reference iz Raziskovalca rešitev in izberite Dodaj reference.
Ko se prikaže pogovorno okno Dodajanje sklica, na zavihku COM izberite WUAPI 2.0 Knjižnica tipov in kliknite ok gumb.
V redu, če je referenčnim nastavitvam raziskovalca rešitev dodana možnost »WUApiLib«.
Dodajanje sklica (VB.NET)
Če VB.NET, z desno tipko miške kliknite Moj projekt iz Raziskovalca rešitev in izberite Odpri.
Ko se lastnosti odprejo, na zavihku na levi kliknite »Prebrskaj«, na desni kliknite gumb Dodaj. Kot v C#, je prikazano pogovorno okno Add Reference, zato na zavihku "COM" izberite "WUAPI 2.0 Type Library" in kliknite ok gumb.
Če se vrnete na prejšnji zaslon in na srednji seznam dodate »WUAPI 2.0 Type Library«, je v redu.
Preverimo tudi "WUApiLib" s spodnjega seznama, da izpustimo opis imenskega prostora v programu.
Scene
Zaslon, ki se uporablja v tem vzorcu, je preprost zaslon z gumbom za izvršitev, da preverite stanje namestitve KB in polje z besedilom, ki prikazuje rezultate.
Delam ga v WPF, vendar je isti zaslon nastavljiv v Windows Form.
program
C UpdateSession
# dodaja ""using WUApiLib;
na začetek kode za zmanjšanje opisa razredov in drugih imenskih prostorov. V VB.NET ste določili, da uvozite imenski prostor v lastnostih projekta, zato vam ni treba pisati ničesar posebnega, če pa ga niste, morate dodati ".Imports WUApiLib
* V C# in VB.NET, če so vsa imena razredov zapisana iz imenskega prostora, kot je ",WUApiLib.UpdateSession
zgoraj navedena specifikacija ni potrebna.
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」追加
Spodaj je koda, ki išče in prikazuje nameščeni 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()
Vsebina je kot komentirana.
IUpdateSearcher.Search
To, kar dobiš z nizom, ki ga določiš kot argument metode, lahko spremenite. Če želite več informacij, glejte IUpdateSearcher::Način iskanja.