Použitie WUA na určenie stavu inštalácie aktualizácií systému Windows

Stránka aktualizovaná :
Dátum vytvorenia strany :

súhrn

Pomocou funkcie WUA vyhľadajte aktualizácie (v KB), ktoré sú nainštalované v systéme Windows, ktorý práve používate.

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

Prevádzkové prostredie

Prostredie kontroly prevádzky

Verzia systému Windows
  • Windows 7 Ultimate
Verzia rozhrania .NET Framework
  • 4

Vyžadujú sa systémové požiadavky

Verzia systému Windows
  • Windows 7 (iné prostredia nepotvrdené)
Verzia rozhrania .NET Framework
  • 4.0 (nie sú potvrdené žiadne iné prostredia)

látka

O tejto vzorke

Cieľom tejto vzorky je určiť kB, ktorý je nainštalovaný v systéme Windows, a účel je takmer rovnaký ako "Na určenie stavu inštalácie aktualizácií systému Windows použite WMI". Táto vzorka sa však kontroluje pomocou "WUA" namiesto WMI.

Popis databázy KB je popísaný v časti "Použite WMI na zistenie, ako sa inštalujú aktualizácie systému Windows", takže skontrolujte tam.

Čo je WUA?

WUA znamená "Windows Update Agent" a je to sada rozhraní COM, ktoré umožňujú prístup k službám Windows Update a Windows Server Update Services (WSUS). Môžete ho použiť na určenie, ktorý KB je nainštalovaný v systéme Windows.

Podrobné vysvetlenie WUA a programovania pomocou WUA nájdete na nasledujúcich odkazoch:

Programy, ktoré vyhľadávajú stav inštalácie kB

Pridávanie referencií (C#)

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

Ak chcete používať WUA, musíte odkazovať na knižnicu typu WUAPI 2.0 z COM.

V prípade projektov C# kliknite pravým tlačidlom myši na položku Referencie v Prieskumníkovi riešení a vyberte položku Pridať referencie.

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

Keď sa zobrazí dialógové okno Pridať referenciu, na karte COM vyberte položku Knižnica typu WUAPI 2.0 a kliknite na tlačidlo OK.

OK, ak sa do referenčných nastavení Prieskumníka riešení pridá "WUApiLib".

Pridanie odkazu (VB.NET)

My Project から開くを選択

Ak chcete VB.NET, kliknite pravým tlačidlom myši na položku Môj projekt v Prieskumníkovi riešení a vyberte položku Otvoriť.

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

Keď sa vlastnosti otvoria, kliknite na "Prehľadávať" na karte vľavo, kliknite na tlačidlo Pridať vpravo. Rovnako ako v C#, zobrazí sa dialógové okno Pridať referenciu, takže na karte "COM" vyberte "WUAPI 2.0 Type Library" a kliknite na tlačidlo OK.

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

Ak sa vrátite na predchádzajúcu obrazovku a do stredného zoznamu pridáte "Knižnica typov WUAPI 2.0", je to v poriadku.

Skontrolujme tiež "WUApiLib" zo zoznamu nižšie, aby sme vynechali popis priestoru názvov v programe.

scéna

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

Obrazovka použitá v tejto ukážke je jednoduchá obrazovka s tlačidlom spustenia na kontrolu stavu inštalácie KB a textovým poľom, ktoré zobrazuje výsledky.

Robím to vo WPF, ale rovnaká obrazovka je konfigurovateľná vo Formulári Windows.

program

C UpdateSession # pridá ""using WUApiLib; na začiatok kódu, aby sa zmenšil popis tried a iných menných priestorov. V VB.NET ste zadali import priestoru názvov do vlastností projektu, takže nemusíte písať nič zvláštne, ale ak ste to neurobili, musíte pridať ".Imports WUApiLib

* V C# aj VB.NET, ak sú všetky názvy tried napísané z menného priestoru, ako napríklad ",WUApiLib.UpdateSession vyššie uvedená špecifikácia nie je potrebná.

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

Nižšie je uvedený kód, ktorý vyhľadáva a uvádza nainštalovanú aktualizáciu 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ý, ako je komentovaný.

IUpdateSearcher.SearchTo, čo získate pomocou reťazca, ktorý zadáte ako argument metódy, môžete zmeniť. Ďalšie informácie nájdete v časti IUpdateSearcher::Metóda vyhľadávania.