Gunakan WUA untuk menentukan status pemasangan kemas kini Windows

Laman dikemaskini :
Tarikh penciptaan halaman :

Ringkasan

Gunakan WUA untuk menyemak kemas kini (dalam KB) yang dipasang pada Windows yang sedang anda gunakan.

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

Persekitaran Operasi

Persekitaran pemeriksaan operasi

Versi Windows
  • Windows 7 Ultimate
Versi .NET Framework
  • 4

Keperluan sistem diperlukan

Versi Windows
  • Windows 7 (persekitaran lain tidak disahkan)
Versi .NET Framework
  • 4.0 (tiada persekitaran lain disahkan)

Bahan

Mengenai sampel ini

Matlamat sampel ini adalah untuk menentukan KB yang dipasang pada Windows, dan tujuannya hampir sama dengan "Gunakan WMI untuk menentukan status pemasangan kemas kini Windows." Walau bagaimanapun, sampel ini diperiksa menggunakan "WUA" dan bukannya WMI.

Perihalan KB diterangkan dalam "Gunakan WMI untuk mengetahui cara kemas kini Windows dipasang," jadi semak di sana.

Apa itu WUA?

WUA bermaksud "Ejen Kemas Kini Windows" dan merupakan satu set antara muka COM yang membolehkan akses kepada Kemas Kini Windows dan Perkhidmatan Kemas Kini Pelayan Windows (WSUS). Anda boleh menggunakannya untuk menentukan KB mana yang dipasang pada Windows.

Untuk penjelasan terperinci tentang WUA dan pengaturcaraan dengan WUA, lihat pautan berikut:

Program yang mencari status pemasangan KB

Menambah Rujukan (C#)

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

Untuk menggunakan WUA, anda mesti merujuk Perpustakaan Jenis WUAPI 2.0 daripada COM.

Untuk projek C#, klik kanan Rujukan daripada Penjelajah Penyelesaian dan pilih Tambah Rujukan.

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

Apabila dialog Tambah Rujukan muncul, pilih Pustaka Jenis WUAPI 2.0 daripada tab COM dan klik OK butang.

OK jika "WUApiLib" ditambahkan pada seting rujukan Solution Explorer.

Menambah rujukan (VB.NET)

My Project から開くを選択

Untuk VB.NET, klik kanan Projek Saya daripada Penjelajah Penyelesaian dan pilih Buka.

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

Apabila hartanah dibuka, klik "Semak imbas" dari tab di sebelah kiri, klik butang Tambah di sebelah kanan. Seperti dalam C#, dialog Tambah Rujukan dipaparkan, jadi pilih "Perpustakaan Jenis WUAPI 2.0" dari tab "COM" dan klik OK butang.

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

Jika anda kembali ke skrin sebelumnya dan menambah "Pustaka Jenis WUAPI 2.0" ke senarai tengah, tidak mengapa.

Juga, mari kita semak "WUApiLib" dari senarai di bawah untuk meninggalkan perihalan ruang nama dalam program ini.

Adegan

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

Skrin yang digunakan dalam sampel ini adalah skrin mudah dengan butang pelaksanaan untuk menyemak status pemasangan KB dan kotak teks yang memaparkan hasilnya.

Saya membuatnya dalam WPF, tetapi skrin yang sama boleh dikonfigurasikan dalam Bentuk Windows.

Program

C UpdateSession # menambah ""using WUApiLib; pada permulaan kod untuk mengurangkan perihalan kelas dan ruang nama lain. Dalam VB.NET, anda menyatakan untuk mengimport ruang nama dalam sifat projek, jadi anda tidak perlu menulis apa-apa yang istimewa, tetapi jika anda belum, anda perlu menambah ".Imports WUApiLib

* Dalam kedua-dua C # dan VB.NET, jika semua nama kelas ditulis dari ruang nama seperti ",WUApiLib.UpdateSession spesifikasi di atas tidak diperlukan.

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

Berikut adalah kod yang mencari dan menyenaraikan KB yang dipasang.

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

Kandungannya seperti yang di komen.

IUpdateSearcher.SearchAnda boleh mengubah perkara yang anda dapat dengan rentetan yang anda tentukan sebagai argumen kaedah. Untuk maklumat lanjut, lihat IUpdateSearcher::Kaedah Carian.