Usar WUA para determinar el estado de instalación de las actualizaciones de Windows

Actualización de la página :
Fecha de creación de la página :

resumen

Utilice WUA para buscar actualizaciones (en KB) que estén instaladas en el Windows que está utilizando actualmente.

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

Entorno operativo

Entorno de comprobación de funcionamiento

Versión de Windows
  • Windows 7 Ultimate
Versión de .NET Framework
  • 4

Requisitos del sistema requeridos

Versión de Windows
  • Windows 7 (otros entornos sin confirmar)
Versión de .NET Framework
  • 4.0 (no se confirman otros entornos)

sustancia

Acerca de este ejemplo

El objetivo de este ejemplo es determinar la KB que está instalada en Windows y el propósito es casi el mismo que "Usar WMI para determinar el estado de instalación de las actualizaciones de Windows". Sin embargo, este ejemplo se comprueba mediante "WUA" en lugar de WMI.

La descripción de KB se describe en "Usar WMI para averiguar cómo se instalan las actualizaciones de Windows", así que consulte allí.

¿Qué es WUA?

WUA significa "Agente de Windows Update" y es un conjunto de interfaces COM que permiten el acceso a Windows Update y Windows Server Update Services (WSUS). Puede usarlo para determinar qué KB está instalado en Windows.

Para obtener una explicación detallada de WUA y la programación con WUA, consulte los siguientes enlaces:

Programas que buscan el estado de instalación de KB

Agregar referencias (C#)

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

Para utilizar WUA, debe hacer referencia a la biblioteca de tipos de WUAPI 2.0 desde COM.

Para los proyectos de C#, haga clic con el botón secundario en Referencias desde el Explorador de soluciones y elija Agregar referencias.

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

Cuando aparezca el cuadro de diálogo Agregar referencia, seleccione Biblioteca de tipos WUAPI 2.0 en la ficha COM y haga clic en el botón Aceptar.

Aceptar si se agrega "WUApiLib" a la configuración de referencia del Explorador de soluciones.

Agregar una referencia (VB.NET)

My Project から開くを選択

Para obtener VB.NET, haga clic con el botón secundario en Mi proyecto en el Explorador de soluciones y elija Abrir.

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

Cuando se abran las propiedades, haga clic en "Examinar" en la pestaña de la izquierda, haga clic en el botón Agregar a la derecha. Al igual que en C#, se muestra el cuadro de diálogo Agregar referencia, así que seleccione "WuAPI 2.0 Type Library" en la pestaña "COM" y haga clic en el botón Aceptar.

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

Si vuelve a la pantalla anterior y agrega "WUAPI 2.0 Type Library" a la lista central, está bien.

Además, marquemos "WUApiLib" de la lista a continuación para omitir la descripción del espacio de nombres en el programa.

escena

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

La pantalla utilizada en este ejemplo es una pantalla simple con un botón de ejecución para comprobar el estado de instalación de la KB y un cuadro de texto que muestra los resultados.

Lo estoy haciendo en WPF, pero la misma pantalla se puede configurar en Windows Forms.

programa

C UpdateSession # agrega ""using WUApiLib; al principio del código para reducir la descripción de las clases y otros espacios de nombres. En VB.NET, especificó importar el espacio de nombres en las propiedades del proyecto, por lo que no necesita escribir nada especial, pero si no lo ha hecho, debe agregar ".Imports WUApiLib

* Tanto en C# como en VB.NET, si todos los nombres de clase se escriben desde un espacio de nombres como ",WUApiLib.UpdateSession la especificación anterior no es necesaria.

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ón se muestra el código que busca y enumera la KB instalada.

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 contenido es como se comenta.

IUpdateSearcher.SearchPuede cambiar lo que obtiene mediante la cadena que especifique como argumento del método. Para obtener más información, vea IUpdateSearcher::Search (Método).