Použití služby WMI k určení stavu instalace aktualizací systému Windows

Stránky aktualizovány :
Datum vytvoření stránky :

shrnutí

Pomocí služby WMI vyhledejte aktualizace (v kB), které jsou nainstalovány v systému Windows, který právě používáte.

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

Provozní prostředí

Prostředí pro kontrolu provozu

Verze systému Windows
  • Windows 7 Ultimate
  • Windows Vista Business
Verze rozhraní .NET Framework
  • 3.5 SP1
  • 4

Požadované systémové požadavky

Verze systému Windows
  • Windows 98 nebo novější (ale ne všechny potvrzené)
Verze rozhraní .NET Framework
  • 1.0
  • 1.1
  • 2.0
  • 3.0
  • 3.5
  • 4.0

hmota

Co je KB?

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

KB se také používá jako zkratka pro výraz "kilobyte" nebo "klávesnice", takže si nemyslím, že je to slovo používané pro širokou veřejnost, ale aktualizace, jako je podpora zabezpečení systému Windows a opravy chyb, jsou někdy označovány jako "KB" po prvních dvou písmenech ID.

Každé z těchto aktualizací je přiřazeno ID a je zadáno ve formátu "KBXXXXXXX", kde XXXXXX je libovolné číslo. Počet číslic není pevný). Všimněte si však, že ne všechny aktualizace mají tento formát.

Mimochodem, původní název této "KB" je "Microsoft Knowledge Base" a odpovídá ID technického článku publikovaného společností Microsoft na webu. Pokud se například jedná o aktualizaci KB980218, odpovídající technický článek je http://support.microsoft.com/?kbid=980218".

Programy, které vyhledávají stav instalace znalostní báze KB

I když jsou ukázky popsané v Visual Studio 2010 a WPF, programy pro kontrolu KB lze také použít v dřívějších aplikacích Visual Studio, Windows Form a konzoly. V tomto článku použijeme službu WMI (Windows Management Instrumentation) ke kontrole instalace znalostní báze.

Přidání referencí

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

Chcete-li použít službu WMI, použijte třídy ManagementObjectSearcher a ManagementObject, ale musíte se obrátit na System.Management .dll pro použití těchto tříd.

U projektů v jazyce C# klikněte pravým tlačítkem na Odkazy z Průzkumníka řešení a zvolte Přidat odkazy.

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

Když se zobrazí dialogové okno Přidat odkaz, klikněte na ". Na kartě NET vyberte System.Management a klikněte na tlačítko OK.

OK, pokud je do odkazu Průzkumník řešení přidán "System.Management".

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

Pokud VB.NET otevřít vlastnosti projektu, klikněte na "Procházet" na kartě vlevo, klikněte na tlačítko Přidat vpravo. Jak je uvedeno výše, zobrazí se dialogové okno Přidat odkaz, takže vyberte "System.Management" a klikněte na tlačítko OK.

Pokud se vrátíte na předchozí obrazovku a přidáte "System.Management" do prostředního seznamu, je to v pořádku.

Zaškrtněte také "System.Management" z níže uvedeného seznamu a vynechejte popisy oboru názvů v programu.

Také, i když to nesouvisí s původními tipy, tato ukázka používá třídu StringBuilder, takže jsem také zkontroloval obor názvů "System.Text". (Pouze VB.NET)

scéna

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

Obrazovka použitá v této ukázce je jednoduchá obrazovka s tlačítkem spuštění pro kontrolu stavu instalace znalostní báze a textovým polem, které zobrazuje výsledky.

Dělám to ve WPF, ale stejná obrazovka je konfigurovatelná ve Windows Form.

program

C ManagementObjectSearcher # přidá ""using System.Management; na začátek kódu, aby se snížil popis tříd a dalších jmenných prostorů. V VB.NET jste zadali, že obor názvů by měl být importován ve vlastnostech projektu, takže nemusíte psát nic zvláštního, ale pokud jste tak neučinili, musíte přidat ".Imports System.Management

* V jazyce C# i VB.NET, pokud jsou všechny názvy tříd zapsány z oboru názvů, jako je například "System.Management.ManagementObjectSearcher", není výše uvedená specifikace nutná.

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

Níže je kód, který vyhledá a zobrazí seznam nainstalovaných 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 prvním řádku je textové pole pro zobrazení získaných výsledků.

vytvořínew ManagementObjectSearcher instanci třídy hledání spravovaného objektu a nastaví dotaz WMI jako argument. Syntaxe dotazu je téměř stejná jako u příkazu SQL, takže se na něj podívejte ve vztahu k SQL pro podrobnosti. "Win32_QuickFixEngineering" představuje aktualizaci, která se vztahuje k aktuálnímu operačnímu systému.

Provede vyhledávání v dotazu WMI zadaném dříve v "query.Get() a vrátí výsledky jako ".ManagementObjectCollection

Vzhledem k tomu, že "" uvádí informace o aktualizaci, dostaneme "" do popředí a v důsledku toho zapíšeme jedinečný identifikátor z parametru "HotFixID"ManagementObjectCollectionManagementObject.

作成されたフォルダ

Když toto provedete, ID aktualizace jsou uvedeny tak, jak je znázorněno na obrázku.

Jak můžete vidět, když ji spustíte, je pomalá pouze při prvním spuštění. Po druhém je poměrně brzy.

Není jasné, zda system.management.dll je pomalý při načítání a zpracování nebo provádění dotazů WMI je pomalé, ale skutečnost, že je pomalý, se nemění, takže pokud se obáváte latence při jeho použití, myslím, že je nutné přijmout opatření, jako je asynchronní spuštění.