Naudokite WUA, kad nustatytumėte "Windows" naujinimų diegimo būseną
suvestinė
Naudokite WUA, kad patikrintumėte, ar nėra naujinimų (KB), įdiegtų šiuo metu naudojamoje "Windows".
Darbinė aplinka
Veikimo tikrinimo aplinka
"Windows" versija |
|
".NET Framework" versija |
|
Reikalingi sistemos reikalavimai
"Windows" versija |
|
".NET Framework" versija |
|
medžiaga
Apie šį pavyzdį
Šio pavyzdžio tikslas yra nustatyti KB, kuris yra įdiegtas sistemoje "Windows", o tikslas yra beveik toks pat kaip "Naudokite WMI, kad nustatytumėte" Windows "naujinimų diegimo būseną". Tačiau šis pavyzdys tikrinamas naudojant "WUA", o ne WMI.
KB aprašas aprašytas skyriuje "Naudokite WMI, kad sužinotumėte, kaip įdiegiami "Windows" naujinimai", todėl patikrinkite ten.
Kas yra WUA?
WUA reiškia "Windows Update Agent" ir yra COM sąsajų rinkinys, leidžiantis pasiekti "Windows Update" ir "Windows Server Update Services" (WSUS). Jį galite naudoti norėdami nustatyti, kuris KB yra įdiegtas sistemoje "Windows".
Išsamų WUA ir programavimo su WUA paaiškinimą rasite šiose nuorodose:
- "Windows Update" agento API
- Ar yra būdas gauti visų naujinimų, kurie buvo įtraukti į mano kompiuterį, sąrašą?
- "IUpdateSearcher"::Paieškos metodas
Programos, kurios ieško KB diegimo būsenos
Nuorodų pridėjimas (C#)
Norėdami naudoti WUA, turite nurodyti WUAPI 2.0 tipo biblioteką iš COM.
C# projektams dešiniuoju pelės mygtuku spustelėkite Nuorodos iš "Solution Explorer" ir pasirinkite Pridėti nuorodų.
Kai pasirodys dialogo langas Pridėti nuorodą, skirtuke COM pasirinkite WUAPI 2.0 Tipo biblioteka ir spustelėkite mygtuką Gerai(OK).
Gerai, jei "WUApiLib" įtraukiamas į "Solution Explorer" nuorodos nustatymus.
Nuorodos pridėjimas (VB.NET)
Norėdami VB.NET, sprendimų naršyklėje dešiniuoju pelės mygtuku spustelėkite Mano projektas ir pasirinkite Atidaryti.
Kai ypatybės atsidarys, kairėje esančiame skirtuke spustelėkite "Naršyti", spustelėkite dešinėje esantį mygtuką Pridėti. Kaip ir C#, rodomas dialogo langas Pridėti nuorodą, todėl skirtuke "COM" pasirinkite "WUAPI 2.0 Tipo biblioteka" ir spustelėkite mygtuką Gerai.
Jei grįšite į ankstesnį ekraną ir prie vidurinio sąrašo pridėsite "WUAPI 2.0 tipo biblioteka", viskas gerai.
Be to, patikrinkime "WUApiLib" iš toliau pateikto sąrašo, kad praleistume programos vardų srities aprašymą.
Scena
Šiame pavyzdyje naudojamas ekranas yra paprastas ekranas su vykdymo mygtuku, kad būtų galima patikrinti KB diegimo būseną, ir teksto laukeliu, kuriame rodomi rezultatai.
Aš tai darau WPF, bet tą patį ekraną galima konfigūruoti "Windows Form".
programa
C UpdateSession
# prideda ""using WUApiLib;
prie kodo pradžios, kad sumažintų klasių ir kitų vardų sričių aprašymą. VB.NET nurodėte importuoti vardų sritį į projekto ypatybes, todėl jums nereikia rašyti nieko ypatingo, bet jei to nepadarėte, turite pridėti ".Imports WUApiLib
* Tiek C#, tiek VB.NET, jei visi klasių pavadinimai rašomi iš vardų srities, pvz., ",WUApiLib.UpdateSession
aukščiau pateikta specifikacija nėra būtina.
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」追加
Žemiau yra kodas, kuris ieško ir pateikia įdiegtą KB sąrašą.
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()
Turinys yra toks, koks komentuojamas.
IUpdateSearcher.Search
Galite pakeisti tai, ką gaunate pagal eilutę, kurią nurodėte kaip metodo argumentą. Daugiau informacijos ieškokite "IUpdateSearcher::Search Method".