Použití agenta WUA k určení stavu instalace aktualizací systému Windows
shrnutí
Pomocí agenta WUA vyhledejte aktualizace (v kB), které jsou nainstalovány v systému Windows, který právě používáte.
Provozní prostředí
Prostředí pro kontrolu provozu
Verze systému Windows |
|
Verze rozhraní .NET Framework |
|
Požadované systémové požadavky
Verze systému Windows |
|
Verze rozhraní .NET Framework |
|
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:
- Rozhraní API služby Agent webu Windows Update
- Existuje způsob, jak získat seznam všech aktualizací, které byly přidány do mého počítače?
- IUpdateSearcher::Search – metoda
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.
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)
V VB.NET klikněte pravým tlačítkem na Můj projekt z Průzkumníka řešení a zvolte Otevřít.
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.
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
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.Search
Můž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.