Uporaba WMI za določanje stanja namestitve posodobitev sistema Windows

Stran posodobljena :
Datum ustvarjanja strani :

Povzetek

Uporabite WMI, če želite preveriti, ali obstajajo posodobitve (v KB), ki so nameščene v sistemu Windows, ki ga trenutno uporabljate.

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

Operativno okolje

Okolje za preverjanje delovanja

Različica sistema Windows
  • Windows 7 Ultimate
  • Poslovni sistem Windows Vista
.NET Framework Različica
  • 3.5 SP1
  • 4

Zahtevane sistemske zahteve

Različica sistema Windows
  • Windows 98 ali kasnejši (vendar ni vse potrjeno)
.NET Framework Različica
  • 1.0
  • 1.1
  • 2.0
  • 3.0
  • 3.5
  • 4.0

snov

Kaj je KB?

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

KB se uporablja tudi kot okrajšava za izraz "kilobajt" ali "tipkovnica", zato mislim, da to ni beseda, ki se uporablja za splošno javnost, vendar posodobitve, kot so varnostna podpora sistema Windows in popravki napak, se po prvih dveh črkah ID-ja včasih imenujejo "KB".

Vsaki od teh posodobitev je dodeljen ID in določen v obliki "KBXXXXXXX", kjer je XXXXXX katero koli število. Število števk ni fiksno). Vendar upoštevajte, da vse posodobitve ne sledijo tej obliki zapisa.

Mimogrede, izvirno ime tega »KB« je »Microsoftova baza znanja« in se ujema z ID-jem tehničnega članka, ki ga microsoft objavi na spletu. Na primer, če gre za posodobitev kb980218, je ustrezen tehnični članek http://support.microsoft.com/?kbid=980218".

Programi, ki iščejo stanje namestitve KB

Čeprav so vzorci opisani v programu Visual Studio 2010 in WPF, lahko programe za preverjanje kb uporabljate tudi v starejših programih Visual Studio, Windows Form in konzole. V tem članku bomo za preverjanje namestitve KB uporabili Windows Management Instrumentation (WMI).

Dodajanje sklicev

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

Če želite uporabljati WMI, uporabite razrede ManagementObjectSearcher in ManagementObject, vendar morate za uporabo teh razredov .dll system.Management.

Za projekte C# z desno tipko miške kliknite Reference iz Raziskovalca rešitev in izberite Dodaj reference.

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

Ko se prikaže pogovorno okno Dodajanje sklica, kliknite na ". Na zavihku NET izberite System.Management in kliknite ok gumb.

V redu, če se sklicu raziskovalca rešitev doda »System.Management«.

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

Če VB.NET odprite lastnosti projekta, na zavihku na levi kliknite »Prebrskaj« in na desni kliknite gumb Dodaj. Kot zgoraj, je prikazano pogovorno okno Add Reference, zato izberite "System.Management" in kliknite ok gumb.

Če se vrnete na prejšnji zaslon in dodate »System.Management« na srednji seznam, je v redu.

Prav tako preverite "System.Management" s spodnjega seznama, da izoščite opise imenskega prostora v vašem programu.

Prav tako, čeprav ni povezan z izvirnimi nasveti, ta vzorec uporablja StringBuilder razred, tako da sem preveril tudi imenski prostor "System.Text". (VB.NET samo)

Scene

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

Zaslon, ki se uporablja v tem vzorcu, je preprost zaslon z gumbom za izvršitev, da preverite stanje namestitve KB in polje z besedilom, ki prikazuje rezultate.

Delam ga v WPF, vendar je isti zaslon nastavljiv v Windows Form.

program

C ManagementObjectSearcher # dodaja ""using System.Management; na začetek kode za zmanjšanje opisa razredov in drugih imenskih prostorov. V VB.NET ste določili, da je treba imenski prostor uvoziti v lastnosti projekta, zato vam ni treba pisati ničesar posebnega, če pa tega niste storili, morate dodati ".Imports System.Management

* V C# in VB.NET, če so vsa imena razredov zapisana iz imenskega prostora, kot je "System.Management.ManagementObjectSearcher", zgoraj navedena specifikacija ni potrebna.

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

Spodaj je koda, ki išče in prikazuje nameščeni KB.

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 v prvi vrstici je polje z besedilom za prikaz pridobljenih rezultatov.

ustvari primereknew ManagementObjectSearcher razreda iskanja upravljanega predmeta in poizvedbo WMI nalaga kot argument. Sintaksa poizvedbe je skoraj enaka SQL izjavi, zato si jo oglejte v zvezi s SQL za podrobnosti. »Win32_QuickFixEngineering« predstavlja posodobitev, ki velja za trenutni operacijski sistem.

Izvede iskanje v poizvedbi WMI, določeni prej v "query.Get() in vrne rezultate kot ".ManagementObjectCollection

Ker »« navede informacije o posodobitvi, smo dobili "" v prednje in napisati enolični identifikator iz parametra "HotFixID"ManagementObjectCollectionManagementObject kot rezultat.

作成されたフォルダ

Ko to storite, so ID-ji posodobitev navedeni, kot je prikazano na sliki.

Kot lahko vidite, ko ga zaženete, je počasna le pri prvem teku. Po drugič je razumno zgodaj.

Ni jasno, ali System.Management.dll je počasno nalaganje in obdelavo ali WMI poizvedbe je počasna, vendar dejstvo, da je počasno ne spremeni, tako da, če ste zaskrbljeni zaradi zamude pri uporabi, mislim, da je treba sprejeti ukrepe, kot so asinchronous izvršitev.