Gunakan WMI untuk menentukan status instalasi pembaruan Windows

Halaman Diperbarui :
Tanggal pembuatan halaman :

ringkasan

Gunakan WMI untuk memeriksa pembaruan (dalam KB) yang diinstal pada Windows yang sedang Anda gunakan.

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

Lingkungan Operasi

Lingkungan pemeriksaan operasi

Versi Windows
  • Windows 7 Ultimate
  • Bisnis Windows Vista
Versi .NET Framework
  • 3,5 SP1
  • 4

Persyaratan sistem yang diperlukan

Versi Windows
  • Windows 98 atau yang lebih baru (tetapi tidak semua dikonfirmasi)
Versi .NET Framework
  • 1.0
  • 1.1
  • 2.0
  • 3.0
  • 3.5
  • 4.0

zat

Apa itu KB?

インストールされている更新プログラム(KB)が表示されています。

KB juga digunakan sebagai singkatan untuk ungkapan "kilobyte" atau "keyboard", jadi saya tidak berpikir itu adalah kata yang digunakan untuk masyarakat umum, tetapi pembaruan seperti dukungan keamanan Windows dan perbaikan bug kadang-kadang disebut sebagai "KB" setelah dua huruf pertama ID.

Masing-masing pembaruan ini diberi ID dan ditentukan dalam format "KBXXXXXXX" di mana XXXXXX adalah nomor apa pun. Jumlah digit tidak tetap). Namun, perhatikan bahwa tidak semua pembaruan mengikuti format ini.

Omong-omong, nama asli "KB" ini adalah "Basis Pengetahuan Microsoft" dan cocok dengan ID artikel teknis yang diterbitkan oleh Microsoft di Web. Misalnya, jika itu adalah pembaruan untuk KB980218, artikel teknis yang sesuai adalah http://support.microsoft.com/?kbid=980218".

Program yang mencari status instalasi KB

Meskipun sampel dijelaskan dalam Visual Studio 2010 dan WPF, program pengecekan KB juga dapat digunakan di Visual Studio sebelumnya, Windows Form, dan aplikasi konsol. Pada artikel ini, kita akan menggunakan Windows Management Instrumentation (WMI) untuk memeriksa instalasi KB.

Menambahkan Referensi

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

Untuk menggunakan WMI, Anda menggunakan kelas ManagementObjectSearcher dan ManagementObject, tetapi Anda harus merujuk ke System.Management .dll untuk menggunakan kelas-kelas ini.

Untuk proyek C#, klik kanan Referensi dari Penjelajah Solusi dan pilih Tambahkan Referensi.

参照の追加ダイアログで System.Management を選択して追加しています

Ketika dialog Tambahkan Referensi muncul, klik ". Dari tab NET, pilih System.Management dan klik baik tombol.

OK jika "System.Management" ditambahkan ke referensi Penjelajah Solusi.

VB.NET のプロジェクトのプロパティから System.Management の参照を追加しています

Jika VB.NET membuka properti proyek, klik "Browse" dari tab di sebelah kiri, klik tombol Add di sebelah kanan. Seperti di atas, dialog Add Reference ditampilkan, jadi pilih "System.Management" dan klik tombol OK.

Jika Anda kembali ke layar sebelumnya dan menambahkan "System.Management" ke daftar tengah, tidak apa-apa.

Juga, centang "System.Management" dari daftar di bawah ini untuk menghilangkan deskripsi namespace dalam program Anda.

Juga, meskipun tidak terkait dengan tips asli, sampel ini menggunakan kelas StringBuilder, jadi saya juga memeriksa namespace "System.Text". (VB.NET saja)

Adegan

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

Layar yang digunakan dalam sampel ini adalah layar sederhana dengan tombol eksekusi untuk memeriksa status instalasi KB dan kotak teks yang menampilkan hasilnya.

Saya membuatnya di WPF, tetapi layar yang sama dapat dikonfigurasi dalam Bentuk Windows.

rencana

C ManagementObjectSearcher # menambahkan ""using System.Management; ke awal kode untuk mengurangi deskripsi kelas dan ruang nama lainnya. Dalam VB.NET, Anda menentukan bahwa namespace harus diimpor di properti proyek, jadi Anda tidak perlu menulis sesuatu yang istimewa, tetapi jika Anda belum melakukannya, Anda perlu menambahkan ".Imports System.Management

* Dalam C# dan VB.NET, jika semua nama kelas ditulis dari namespace seperti "System.Management.ManagementObjectSearcher", spesifikasi di atas tidak diperlukan.

C #

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 System.Management; // 追加 (参照から「.NET」より「System.Management」追加)

Di bawah ini adalah kode yang mencari dan mencantumkan KB yang diinstal.

C #

this.ResultTextBox.Text = "";

// WMI クエリをセットして管理オブジェクト検索クラスを作成
ManagementObjectSearcher query =
  new ManagementObjectSearcher("Select * From Win32_QuickFixEngineering");

// WMI クエリを使用して管理オブジェクトコレクションを取得
ManagementObjectCollection queryCollection = query.Get();

StringBuilder builder = new StringBuilder();

// コレクションから管理オブジェクトを列挙する
// ここでは HotFixID を取得
foreach (ManagementObject mo in queryCollection)
{
  builder.AppendLine(mo["HotFixID"].ToString());
}

// 取得した KB 一覧をセット
this.ResultTextBox.Text = builder.ToString();

VB.NET

Me.ResultTextBox.Text = ""

' WMI クエリをセットして管理オブジェクト検索クラスを作成
Dim query As ManagementObjectSearcher = _
  New ManagementObjectSearcher("Select * From Win32_QuickFixEngineering")

' WMI クエリを使用して管理オブジェクトコレクションを取得
Dim queryCollection As ManagementObjectCollection = query.Get()

Dim builder As System.Text.StringBuilder = New System.Text.StringBuilder()

' コレクションから管理オブジェクトを列挙する
' ここでは HotFixID を取得
For Each mo As ManagementObject In queryCollection
  builder.AppendLine(mo("HotFixID").ToString())
Next

' 取得した KB 一覧をセット
Me.ResultTextBox.Text = builder.ToString()

""ResultTextBox di baris pertama adalah kotak teks untuk menampilkan hasil yang diperoleh.

membuatnew ManagementObjectSearcher instans kelas pencarian objek terkelola dan menetapkan kueri WMI sebagai argumen. Sintaks kueri hampir sama dengan pernyataan SQL, jadi lihatlah dalam kaitannya dengan SQL untuk detailnya. "Win32_QuickFixEngineering" mewakili pembaruan yang berlaku untuk sistem operasi saat ini.

Melakukan pencarian pada kueri WMI yang ditentukan sebelumnya di "query.Get() dan mengembalikan hasilnya sebagai ".ManagementObjectCollection

Karena "" mencantumkan informasi pembaruan, kami mendapatkan "" di foreach dan menulis pengidentifikasi unik dari parameter "HotFixID"ManagementObjectCollectionManagementObject sebagai hasilnya.

作成されたフォルダ

Saat Anda melakukan ini, ID pembaruan tercantum seperti yang ditunjukkan pada gambar.

Seperti yang Anda lihat ketika Anda menjalankannya, itu lambat hanya pada putaran pertama. Setelah kedua kalinya, ini cukup awal.

Tidak jelas apakah System.Management.dll lambat untuk memuat dan memproses atau eksekusi kueri WMI lambat, tetapi fakta bahwa itu lambat tidak berubah, jadi jika Anda khawatir tentang latensi saat menggunakannya, saya pikir perlu untuk mengambil langkah-langkah seperti eksekusi asinkron.