Använd WUA för att fastställa installationsstatus för Windows-uppdateringar

Sidan uppdaterad :
Datum för skapande av sida :

sammanfattning

Använd WUA för att söka efter uppdateringar (i KB) som är installerade på det Windows som du använder för närvarande.

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

Verksamhetsmiljö

Miljö för driftskontroll

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

Systemkrav krävs

Windows-version
  • Windows 7 (andra miljöer obekräftade)
.NET Framework-version
  • 4.0 (inga andra miljöer bekräftade)

substans

Om det här exemplet

Målet med det här exemplet är att bestämma KB som är installerat på Windows, och syftet är nästan detsamma som "Använd WMI för att bestämma installationsstatusen för Windows-uppdateringar." Det här exemplet kontrolleras dock med "WUA" i stället för WMI.

KB-beskrivningen beskrivs i "Använd WMI för att ta reda på hur Windows-uppdateringar installeras", så kolla där.

Vad är WUA?

WUA står för "Windows Update Agent" och är en uppsättning COM-gränssnitt som ger åtkomst till Windows Update och Windows Server Update Services (WSUS). Du kan använda den för att avgöra vilken KB som är installerad på Windows.

En detaljerad förklaring av WUA och programmering med WUA finns i följande länkar:

Program som söker efter KB-installationsstatus

Lägga till referenser (C#)

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

Om du vill använda WUA måste du referera till WUAPI 2.0 Type Library från COM.

För C#-projekt högerklickar du på Referenser från Solution Explorer och väljer Lägg till referenser.

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

När dialogrutan Lägg till referens visas väljer du WUAPI 2.0-typbibliotek på fliken COM och klickar på KNAPPEN OK.

OK om "WUApiLib" läggs till i Referensinställningarna för Solution Explorer.

Lägga till en referens (VB.NET)

My Project から開くを選択

För VB.NET högerklickar du på Mitt projekt från Solution Explorer och väljer Öppna.

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

När egenskaperna öppnas klickar du på "Bläddra" på fliken till vänster, klickar på knappen Lägg till till höger. Precis som i C# visas dialogrutan Lägg till referens, så välj "WUAPI 2.0 Type Library" på fliken "COM" och klicka på OK-knappen.

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

Om du återgår till föregående skärm och lägger till "WUAPI 2.0 Type Library" i mittlistan är det OK.

Låt oss också kontrollera "WUApiLib" från listan nedan för att utelämna beskrivningen av namnområdet i programmet.

scen

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

Skärmen som används i det här exemplet är en enkel skärm med en körningsknapp för att kontrollera installationsstatusen för KB och en textruta som visar resultaten.

Jag gör det i WPF, men samma skärm kan konfigureras i Windows Form.

program

C UpdateSession # lägger till ""using WUApiLib; i början av koden för att minska beskrivningen av klasser och andra namnrymder. I VB.NET har du angett att du ska importera namnområdet i projektegenskaperna, så du behöver inte skriva något speciellt, men om du inte har gjort det måste du lägga till ".Imports WUApiLib

* I både C#- och VB.NET, om alla klassnamn skrivs från ett namnområde som ",WUApiLib.UpdateSession är ovanstående specifikation inte nödvändig.

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

Nedan är koden som söker och listar den installerade 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()

Innehållet är som kommenterat.

IUpdateSearcher.SearchDu kan ändra vad du får genom strängen som du anger som argument för metoden. Mer information finns i IUpdateSearcher::Sökmetod.