A Windows-frissítések telepítési állapotának meghatározásához használja a WMI-t

Oldal frissítve :
Oldal létrehozásának dátuma :

összefoglalás

A WMI segítségével keresse meg a jelenleg használt Windowsra telepített frissítéseket (KB-ban).

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

Működési környezet

Művelet-ellenőrzési környezet

Windows verzió
  • Windows 7 Ultimate
  • Windows Vista Üzleti verzió
NET-keretrendszer verziója
  • 3.5 SP1
  • 4

Rendszerkövetelmények szükségesek

Windows verzió
  • Windows 98 vagy újabb (de nem minden megerősítve)
NET-keretrendszer verziója
  • 1.0
  • 1.1
  • 2.0
  • 3.0
  • 3.5
  • 4.0

lényeg

Mi az a KB?

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

A KB-t a "kilobájt" vagy a "billentyűzet" kifejezés rövidítéseként is használják, így nem hiszem, hogy ez egy olyan szó, amelyet a nagyközönség számára használnak, de az olyan frissítéseket, mint a Windows biztonsági támogatása és a hibajavítások, néha "KB" -nak nevezik az azonosító első két betűje után.

Mindegyik frissítéshez hozzá van rendelve egy azonosító, és a "KBXXXXXXX" formátumban van megadva, ahol XXXXXX bármilyen szám. A számjegyek száma nincs rögzítve). Ne feledje azonban, hogy nem minden frissítés követi ezt a formátumot.

Egyébként ennek a "KB"-nak az eredeti neve "Microsoft Tudásbázis", és megegyezik a Microsoft által az interneten közzétett műszaki cikk azonosítójával. http://support.microsoft.com/?kbid=980218".

A KB telepítési állapotát kereső programok

Bár a mintákat a Visual Studio 2010 és a WPF írja le, a TUDÁSBÁZIS-ellenőrző programok a korábbi Visual Studio-, Windows-űrlap- és konzolalkalmazásokban is használhatók. Ebben a cikkben a Windows Management Instrumentation (WMI) használatával ellenőrizzük a tudásbázis telepítését.

Referenciák hozzáadása

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

A WMI használatához a ManagementObjectSearcher és a ManagementObject osztályokat kell használnia, de ezeknek az osztályoknak a használatához a System.Management .dll kell hivatkoznia.

C#-projektek esetén kattintson a jobb gombbal a Hivatkozások elemre a Megoldáskezelőben, és válassza a Hivatkozások hozzáadása lehetőséget.

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

Amikor megjelenik a Hivatkozás hozzáadása párbeszédpanel, kattintson a ". A NET lapon válassza a System.Management lehetőséget, majd kattintson az OK gombra.

OK, ha a "System.Management" hozzá van adva a Megoldáskezelő hivatkozáshoz.

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

Ha VB.NET megnyitni a projekt tulajdonságait, kattintson a bal oldali fülön a "Tallózás" gombra, kattintson a jobb oldalon található Hozzáadás gombra. Mint fent, megjelenik a Hivatkozás hozzáadása párbeszédpanel, ezért válassza a "System.Management" lehetőséget, majd kattintson az OK gombra.

Ha visszatér az előző képernyőre, és hozzáadja a "System.Management" -et a középső listához, az rendben van.

Ezenkívül jelölje be a "System.Management" elemet az alábbi listából, hogy kihagyja a névtérleírásokat a programból.

Továbbá, bár nem kapcsolódik az eredeti tippekhez, ez a minta a StringBuilder osztályt használja, ezért ellenőriztem a "System.Text" névteret is. (csak VB.NET)

jelenet

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

A mintában használt képernyő egy egyszerű képernyő, amely egy végrehajtási gombbal rendelkezik a KB telepítési állapotának ellenőrzéséhez, valamint egy szövegmezővel, amely megjeleníti az eredményeket.

WPF-ben készítem, de ugyanaz a képernyő konfigurálható Windows Formában.

program

A C ManagementObjectSearcher # hozzáadja a "" szótusing System.Management; a kód elejéhez, hogy csökkentse az osztályok és más névterek leírását. A VB.NET megadotta, hogy a névteret importálni kell a projekt tulajdonságaiba, így nem kell semmi különlegeset írnia, de ha még nem tette meg, hozzá kell adnia a ".Imports System.Management

* Mind a C#-ban, mind a VB.NET, ha az összes osztálynevet egy olyan névtérből írják, mint a "System.Management.ManagementObjectSearcher", akkor a fenti specifikáció nem szükséges.

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

Az alábbiakban látható az a kód, amely megkeresi és felsorolja a telepített KB-t.

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

Az első sorban lévő ""ResultTextBox egy szövegmező a kapott eredmények megjelenítéséhez.

létrehozzanew ManagementObjectSearcher a felügyelt objektum keresési osztályának egy példányát, és argumentumként állítja be a WMI-lekérdezést. A lekérdezés szintaxisa majdnem megegyezik egy SQL-utasítással, ezért a részletekért tekintse meg az SQL-hez viszonyítva. A "Win32_QuickFixEngineering" az aktuális operációs rendszerre vonatkozó frissítést jelenti.

Keresést hajt végre a korábban a "query.Get() mezőben megadott WMI-lekérdezésen, és az eredményeket ".ManagementObjectCollection

Mivel a "" felsorolja a frissítési információkat, a "" szót kapjuk az előterjesztésben, és ennek eredményeként írunk egy egyedi azonosítót a "HotFixID"ManagementObjectCollectionManagementObject paraméterből.

作成されたフォルダ

Ebben az esetben a frissítési azonosítók az ábrán látható módon jelennek meg.

Amint láthatja, amikor futtatja, csak az első futtatáskor lassú. A második alkalom után viszonylag korán van.

Nem világos, hogy a System.Management.dll lassan betölthető-e és feldolgozható-e, vagy a WMI-lekérdezések végrehajtása lassú, de az a tény, hogy lassú, nem változik, így ha aggódik a késés miatt a használat során, úgy gondolom, hogy olyan intézkedéseket kell tennie, mint az aszinkron végrehajtás.