Use o WUA para determinar o status de instalação das atualizações do Windows

Página atualizada :
Data de criação de página :

resumo

Use WUA para verificar se há atualizações (em KB) que estão instaladas no Windows que você está usando atualmente.

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

Ambiente Operacional

Ambiente de verificação de operação

Versão do Windows
  • Windows 7 Ultimate
Versão do framework .NET
  • 4

Requisitos do sistema necessários

Versão do Windows
  • Windows 7 (outros ambientes não confirmados)
Versão do framework .NET
  • 4.0 (sem outros ambientes confirmados)

substância

Sobre esta amostra

O objetivo desta amostra é determinar o KB que está instalado no Windows, e o objetivo é quase o mesmo que "Use wmi para determinar o status de instalação das atualizações do Windows". No entanto, esta amostra é verificada usando "WUA" em vez de WMI.

A descrição do KB é descrita em "Use wmi para descobrir como as atualizações do Windows são instaladas", então verifique lá.

O que é WUA?

WUA significa "Windows Update Agent" e é um conjunto de interfaces COM que permitem acesso aos Serviços de Atualização do Windows e Do Servidor Windows (WSUS). Você pode usá-lo para determinar qual KB está instalado no Windows.

Para obter uma explicação detalhada da WUA e programação com a WUA, consulte os seguintes links:

Programas que buscam o status de instalação do KB

Adicionando referências (C#)

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

Para usar WUA, você deve consultar a Biblioteca tipo WUAPI 2.0 da COM.

Para projetos C#, clique com o botão direito do mouse em Referências do Solution Explorer e escolha Adicionar referências.

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

Quando a caixa de diálogo Adicionar referência for exibida, selecione A biblioteca de tipos WUAPI 2.0 na guia COM e clique no botão OK.

OK se "WUApiLib" for adicionado às configurações de referência do Solution Explorer.

Adicionar uma referência (VB.NET)

My Project から開くを選択

Para VB.NET, clique com o botão direito do mouse em Meu Projeto do Solution Explorer e escolha Abrir.

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

Quando as propriedades abrirem, clique em "Procurar" na guia à esquerda, clique no botão Adicionar à direita. Como em C#, a caixa de diálogo Adicionar referência é exibida, então selecione "WUAPI 2.0 Type Library" na guia "COM" e clique no botão OK.

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

Se você retornar à tela anterior e adicionar "WUAPI 2.0 Type Library" à lista do meio, ele estiver OK.

Além disso, vamos verificar "WUApiLib" na lista abaixo para omitir a descrição do namespace no programa.

cena

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

A tela usada nesta amostra é uma tela simples com um botão de execução para verificar o status de instalação do KB e uma caixa de texto que exibe os resultados.

Estou fazendo isso no WPF, mas a mesma tela é configurável no Windows Form.

programa

C UpdateSession # adiciona ""using WUApiLib; ao início do código para reduzir a descrição de classes e outros namespaces. Em VB.NET, você especificou importar o namespace nas propriedades do projeto, para que você não precise escrever nada especial, mas se você não tiver, você precisa adicionar ".Imports WUApiLib

* Tanto em C# quanto em VB.NET, se todos os nomes de classe forem escritos a partir de um namespace como ",WUApiLib.UpdateSession a especificação acima não é necessária.

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

Abaixo está o código que pesquisa e lista o KB instalado.

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

O conteúdo é como comentado.

IUpdateSearcher.SearchVocê pode alterar o que você recebe pela sequência que você especifica como o argumento do método. Para obter mais informações, consulte IUpdateSearcher::Método de pesquisa.