Použitie WUA na určenie stavu inštalácie aktualizácií systému Windows
súhrn
Pomocou funkcie WUA vyhľadajte aktualizácie (v KB), ktoré sú nainštalované v systéme Windows, ktorý práve používate.
Prevádzkové prostredie
Prostredie kontroly prevádzky
Verzia systému Windows |
|
Verzia rozhrania .NET Framework |
|
Vyžadujú sa systémové požiadavky
Verzia systému Windows |
|
Verzia rozhrania .NET Framework |
|
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:
- Rozhranie API agenta služby Windows Update
- Existuje spôsob, ako získať zoznam všetkých aktualizácií, ktoré boli pridané do môjho počítača?
- IUpdateSearcher::Metóda vyhľadávania
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.
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)
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ť.
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.
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
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.Search
To, č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.