WUA gebruiken om de installatiestatus van Windows-updates te bepalen

Pagina bijgewerkt :
Aanmaakdatum van pagina :

samenvatting

Gebruik WUA om te controleren op updates (in kB) die zijn geïnstalleerd op het Windows dat u momenteel gebruikt.

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

Werkomgeving

Controle-omgeving voor bewerking

Windows-versie
  • Windows 7 Ultimate
.NET Framework-versie
  • 4

Systeemvereisten vereist

Windows-versie
  • Windows 7 (andere omgevingen onbevestigd)
.NET Framework-versie
  • 4.0 (geen andere omgevingen bevestigd)

stof

Over dit voorbeeld

Het doel van dit voorbeeld is om de KB te bepalen die op Windows is geïnstalleerd en het doel is bijna hetzelfde als 'WMI gebruiken om de installatiestatus van Windows-updates te bepalen'. Dit voorbeeld wordt echter gecontroleerd met "WUA" in plaats van WMI.

De KB-beschrijving wordt beschreven in 'WMI gebruiken om erachter te komen hoe Windows-updates zijn geïnstalleerd', dus controleer daar.

Wat is WUA?

WUA staat voor "Windows Update Agent" en is een set COM-interfaces die toegang bieden tot Windows Update en Windows Server Update Services (WSUS). U kunt het gebruiken om te bepalen welke KB op Windows is geïnstalleerd.

Voor een uitgebreide uitleg van WUA en programmeren met WUA, zie de volgende links:

Programma's die zoeken naar de kb-installatiestatus

Referenties toevoegen (C#)

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

Als u WUA wilt gebruiken, moet u verwijzen naar de WUAPI 2.0-typebibliotheek van COM.

Voor C#-projecten klikt u met de rechtermuisknop op Verwijzingen vanuit Solution Explorer en kiest u Verwijzingen toevoegen.

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

Wanneer het dialoogvenster Referentie toevoegen wordt weergegeven, selecteert u WUAPI 2.0-typebibliotheek op het tabblad COM en klikt u op de knop OK.

OK als "WUApiLib" is toegevoegd aan de referentie-instellingen van Solution Explorer.

Een verwijzing toevoegen (VB.NET)

My Project から開くを選択

Voor VB.NET klikt u met de rechtermuisknop op Mijn project vanuit Solution Explorer en kiest u Openen.

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

Wanneer de eigenschappen worden geopend, klikt u op "Bladeren" op het tabblad aan de linkerkant, klikt u op de knop Toevoegen aan de rechterkant. Net als in C# wordt het dialoogvenster Referentie toevoegen weergegeven, dus selecteer "WUAPI 2.0 Type Library" op het tabblad "COM" en klik op de knop OK.

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

Als u terugkeert naar het vorige scherm en "WUAPI 2.0 Type Library" toevoegt aan de middelste lijst, is het OK.

Laten we ook "WUApiLib" uit de onderstaande lijst aanvinken om de beschrijving van de naamruimte in het programma weg te laten.

toneel

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

Het scherm dat in dit voorbeeld wordt gebruikt, is een eenvoudig scherm met een uitvoeringsknop om de installatiestatus van de KB te controleren en een tekstvak waarin de resultaten worden weergegeven.

Ik maak het in WPF, maar hetzelfde scherm is configureerbaar in Windows Form.

programma

C UpdateSession # voegt ""using WUApiLib; toe aan het begin van de code om de beschrijving van klassen en andere naamruimten te verminderen. In VB.NET hebt u opgegeven om de naamruimte in de projecteigenschappen te importeren, zodat u niets speciaals hoeft te schrijven, maar als u dat niet hebt gedaan, moet u ".Imports WUApiLib

* In zowel C# als VB.NET, als alle klassenamen worden geschreven vanuit een naamruimte zoals ",WUApiLib.UpdateSession is de bovenstaande specificatie niet nodig.

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

Hieronder vindt u de code waarmee de geïnstalleerde KB wordt doorzocht en weergegeven.

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()

De inhoud is zoals becommentarieerd.

IUpdateSearcher.SearchU kunt wijzigen wat u krijgt met de tekenreeks die u opgeeft als het argument van de methode. Zie IUpdateSearcher::Zoekmethode voor meer informatie.