Použití agenta WUA k určení stavu instalace aktualizací systému Windows

Stránky aktualizovány :
Datum vytvoření stránky :

shrnutí

Pomocí agenta WUA vyhledejte aktualizace (v kB), které jsou nainstalovány v systému Windows, který právě používáte.

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

Provozní prostředí

Prostředí pro kontrolu provozu

Verze systému Windows
  • Windows 7 Ultimate
Verze rozhraní .NET Framework
  • 4

Požadované systémové požadavky

Verze systému Windows
  • Windows 7 (jiná prostředí nepotvrzená)
Verze rozhraní .NET Framework
  • 4.0 (žádné jiné prostředí nebylo potvrzeno)

hmota

O této ukázce

Cílem této ukázky je určit znalostní bázi, která je nainstalována v systému Windows, a účel je téměř stejný jako "Použití služby WMI k určení stavu instalace aktualizací systému Windows." Tato ukázka je však kontrolována pomocí "WUA" namísto WMI.

Popis znalostní báze je popsán v části "Použití služby WMI ke zjištění, jak jsou nainstalovány aktualizace systému Windows", takže se podívejte tam.

Co je WUA?

WUA je zkratka pro "Windows Update Agent" a je sada rozhraní MODELU COM, která umožňují přístup k webu Windows Update a Windows Server Update Services (WSUS). Můžete jej použít k určení, která znalostní báze KB je nainstalována v systému Windows.

Podrobné vysvětlení funkce WUA a programování pomocí této funkce naleznete na následujících odkazech:

Programy, které vyhledávají stav instalace znalostní báze KB

Přidání odkazů (C#)

「参照設定」を右クリックして「参照の追加」を選択

Chcete-li použít wua, musíte odkazovat na knihovnu typů WUAPI 2.0 z modelu COM.

U projektů v jazyce C# klikněte pravým tlačítkem na Odkazy z Průzkumníka řešení a zvolte Přidat odkazy.

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

Po zobrazení dialogového okna Přidat odkaz vyberte na kartě COM možnost Knihovna typů WUAPI 2.0 a klikněte na tlačítko OK.

OK, pokud je do referenčního nastavení Průzkumníka řešení přidáno "WUApiLib".

Přidání odkazu (VB.NET)

My Project から開くを選択

V VB.NET klikněte pravým tlačítkem na Můj projekt z Průzkumníka řešení a zvolte Otevřít.

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

Když se vlastnosti otevřou, klikněte na "Procházet" na kartě vlevo, klikněte na tlačítko Přidat vpravo. Stejně jako v jazyce C# se zobrazí dialogové okno Přidat odkaz, takže na kartě "COM" vyberte "Knihovna typů WUAPI 2.0" a klikněte na tlačítko OK.

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

Pokud se vrátíte na předchozí obrazovku a přidáte "WuAPI 2.0 Type Library" do prostředního seznamu, je to v pořádku.

Také zkontrolujeme "WUApiLib" z níže uvedeného seznamu a vynecháme popis oboru názvů v programu.

scéna

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

Obrazovka použitá v této ukázce je jednoduchá obrazovka s tlačítkem spuštění pro kontrolu stavu instalace znalostní báze a textovým polem, které zobrazuje výsledky.

Dělám to ve WPF, ale stejná obrazovka je konfigurovatelná ve Windows Form.

program

C UpdateSession # přidá ""using WUApiLib; na začátek kódu, aby se snížil popis tříd a dalších jmenných prostorů. V VB.NET jste zadali import oboru názvů ve vlastnostech projektu, takže nemusíte psát nic zvláštního, ale pokud ne, musíte přidat ".Imports WUApiLib

* V jazyce C# i VB.NET, pokud jsou všechny názvy tříd zapsány z oboru názvů, jako je například ",WUApiLib.UpdateSession není výše uvedená specifikace nutná.

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」追加

Níže je kód, který vyhledá a zobrazí seznam nainstalovaných 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()

Obsah je tak, jak je komentován.

IUpdateSearcher.SearchMůžete změnit to, co získáte řetězcem, který zadáte jako argument metody. Další informace naleznete v tématu IUpdateSearcher::Search – metoda.