Naudokite WUA, kad nustatytumėte "Windows" naujinimų diegimo būseną

Puslapis atnaujintas :
Puslapio sukūrimo data :

suvestinė

Naudokite WUA, kad patikrintumėte, ar nėra naujinimų (KB), įdiegtų šiuo metu naudojamoje "Windows".

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

Darbinė aplinka

Veikimo tikrinimo aplinka

"Windows" versija
  • "Windows 7 Ultimate"
".NET Framework" versija
  • 4

Reikalingi sistemos reikalavimai

"Windows" versija
  • "Windows 7" (nepatvirtintos kitos aplinkos)
".NET Framework" versija
  • 4.0 (kita aplinka nepatvirtinta)

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:

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ų.

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

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)

My Project から開くを選択

Norėdami VB.NET, sprendimų naršyklėje dešiniuoju pelės mygtuku spustelėkite Mano projektas ir pasirinkite Atidaryti.

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

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.

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

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

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

Š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.SearchGalite pakeisti tai, ką gaunate pagal eilutę, kurią nurodėte kaip metodo argumentą. Daugiau informacijos ieškokite "IUpdateSearcher::Search Method".