Utilitzeu WUA per determinar l'estat d'instal·lació de les actualitzacions de Windows

Pàgina actualitzada :
Data de creació de la pàgina :

resum

Utilitzeu WUA per comprovar si hi ha actualitzacions (en KB) instal·lades al Windows que utilitzeu actualment.

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

Entorn operatiu

Entorn de comprovació de l'operació

Versió de Windows
  • Windows 7 Definitiu
Versió .NET Framework
  • 4

Requisits del sistema requerits

Versió de Windows
  • Windows 7 (altres entorns sense confirmar)
Versió .NET Framework
  • 4.0 (no s'ha confirmat cap altre entorn)

substància

Sobre aquesta mostra

L'objectiu d'aquesta mostra és determinar la KB que s'instal·la a Windows i el propòsit és gairebé el mateix que "Utilitzeu WMI per determinar l'estat d'instal·lació de les actualitzacions de Windows". No obstant això, aquesta mostra es comprova mitjançant "WUA" en lloc de WMI.

La descripció de la KB es descriu a "Utilitza WMI per esbrinar com s'instal·len les actualitzacions de Windows", així que comprova-ho allà.

Què és WUA?

WUA significa "Agent d'actualització de Windows" i és un conjunt d'interfícies COM que permeten accedir a Windows Update i Windows Server Update Services (WSUS). Podeu utilitzar-lo per determinar quina KB està instal·lada a Windows.

Per a una explicació detallada de WUA i programació amb WUA, vegeu els següents enllaços:

Programes que cerquen l'estat de la instal·lació de KB

Addició de referències (C#)

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

Per utilitzar WUA, heu de fer referència a la biblioteca de tipus WUAPI 2.0 des de COM.

Per als projectes C#, feu clic amb el botó dret a Referències de l'Explorador de solucions i trieu Afegeix referències.

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

Quan aparegui el diàleg Afegeix referència, seleccioneu Biblioteca de tipus WUAPI 2.0 des de la pestanya COM i feu clic al botó D'acord.

D'acord si "WUApiLib" s'afegeix a la configuració de referència de l'Explorador de solucions.

Afegir una referència (VB.NET)

My Project から開くを選択

Per VB.NET, feu clic amb el botó dret a El meu projecte de l'Explorador de solucions i trieu Obre.

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

Quan s'obrin les propietats, feu clic a "Examinar" des de la pestanya de l'esquerra, feu clic al botó Afegeix a la dreta. Com a C#, es mostra el diàleg Afegeix referència, així que seleccioneu "Wuapi 2.0 Type Library" a la pestanya "COM" i feu clic al botó D'acord.

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

Si torneu a la pantalla anterior i afegiu "Biblioteca de tipus WUAPI 2.0" a la llista mitjana, està bé.

A més, comprovem "WUApiLib" de la llista següent per ometre la descripció de l'espai de noms del programa.

escena

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

La pantalla utilitzada en aquesta mostra és una pantalla senzilla amb un botó d'execució per comprovar l'estat d'instal·lació de la KB i un quadre de text que mostra els resultats.

Ho faig en WPF, però la mateixa pantalla és configurable en Windows Form.

programa

C UpdateSession # afegeix ""using WUApiLib; al començament del codi per reduir la descripció de classes i altres espais de noms. En VB.NET, heu especificat importar l'espai de noms a les propietats del projecte, de manera que no necessiteu escriure res especial, però si no ho heu fet, heu d'afegir ".Imports WUApiLib

* Tant en C# com en VB.NET, si tots els noms de classe s'escriuen des d'un espai de noms com ",WUApiLib.UpdateSession no és necessària l'especificació anterior.

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

A continuació es mostra el codi que cerca i llista la KB instal·lada.

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

El contingut és com s'ha comentat.

IUpdateSearcher.SearchPodeu canviar el que obteniu per la cadena que especifiqueu com a argument del mètode. Per obtenir més informació, vegeu IUpdateSearcher::Mètode de cerca.