WMI:n avulla voit määrittää Windows-päivitysten asennuksen tilan

Sivu päivitetty :
Sivun luontipäivämäärä :

yhteenveto

WMI:n avulla voit tarkistaa päivitykset (KB:nä), jotka on asennettu tällä hetkellä käyttämääsi Windowsiin.

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

Toimintaympäristö

Käyttötarkastuksen ympäristö

Windows-versio
  • Windows 7 Ultimate
  • Windows Vista -liiketoiminta
.NET Framework -versio
  • 3.5 SP1
  • 4

Järjestelmävaatimukset vaaditaan

Windows-versio
  • Windows 98 tai uudempi (mutta ei kaikkia vahvistettu)
.NET Framework -versio
  • 1.0
  • 1.1
  • 2.0
  • 3.0
  • 3.5
  • 4.0

aine

Mikä on KB?

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

KB: tä käytetään myös lyhenteenä ilmaisulle "kilotavu" tai "näppäimistö", joten en usko, että se on sana, jota käytetään suurelle yleisölle, mutta päivityksiä, kuten Windowsin tietoturvatukea ja virheenkorjauksia, kutsutaan joskus nimellä "KB" tunnuksen kahden ensimmäisen kirjaimen jälkeen.

Jokaiselle näistä päivityksistä on määritetty tunnus ja määritetty muodossa "KBXXXXXXX", jossa XXXXXX on mikä tahansa numero. Numeroiden lukumäärää ei ole vahvistettu). Huomaa kuitenkin, että kaikki päivitykset eivät noudata tätä muotoa.

Muuten, tämän "KB": n alkuperäinen nimi on "Microsoft Knowledge Base" ja vastaa Microsoftin verkossa julkaiseman teknisen artikkelin tunnusta. http://support.microsoft.com/?kbid=980218".

Ohjelmat, jotka etsivät KB-asennuksen tilaa

Vaikka näytteet on kuvattu Visual Studio 2010:ssä ja WPF:ssä, KB-tarkistusohjelmia voidaan käyttää myös aiemmissa Visual Studio-, Windows Form- ja konsolisovelluksissa. Tässä artikkelissa käytämme Windowsin hallintainstrumentaatiota (WMI) KB-asennuksen tarkistamiseen.

Viitteiden lisääminen

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

Jos haluat käyttää WMI:tä, käytät ManagementObjectSearcher- ja ManagementObject-luokkia, mutta sinun on viitattava system.management-.dll, jotta voit käyttää näitä luokkia.

Jos kyseessä on C#-projekti, napsauta hiiren kakkospainikkeella Viittaukset Solution Explorerista ja valitse Lisää viitteitä.

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

Kun Lisää viite -valintaikkuna tulee näkyviin, napsauta ". Valitse NET-välilehdeltä System.Management ja napsauta OK painiketta.

OK, jos "System.Management" on lisätty Solution Explorer -viitteeseen.

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

Jos VB.NET avata projektin ominaisuuksia, napsauta "Selaa" vasemmalla olevasta välilehdestä, napsauta oikealla olevaa Lisää-painiketta. Kuten yllä, Lisää viite -valintaikkuna tulee näkyviin, joten valitse "System.Management" ja napsauta OK painiketta.

Jos palaat edelliseen näyttöön ja lisäät "System.Management" keskimmäiseen luetteloon, se on OK.

Tarkista myös "System.Management" alla olevasta luettelosta jättääksesi nimiavaruuden kuvaukset pois ohjelmastasi.

Lisäksi, vaikka se ei liity alkuperäisiin vinkkeihin, tämä näyte käyttää StringBuilder-luokkaa, joten tarkistin myös "System.Text" -nimiavaruuden. (Vain VB.NET)

kohtaus

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

Tässä esimerkissä käytetty näyttö on yksinkertainen näyttö, jossa on suorituspainike KB: n asennuksen tilan tarkistamiseksi ja tekstiruutu, joka näyttää tulokset.

Teen sen WPF: ssä, mutta sama näyttö on määritettävissä Windows Formissa.

ohjelma

C ManagementObjectSearcher # lisää ""using System.Management; koodin alkuun vähentääkseen luokkien ja muiden nimiavaruuksien kuvausta. VB.NET määritit, että nimiavaruus tulisi tuoda projektin ominaisuuksiin, joten sinun ei tarvitse kirjoittaa mitään erityistä, mutta jos et ole tehnyt niin, sinun on lisättävä ".Imports System.Management

* Sekä C#: ssa että VB.NET, jos kaikki luokkien nimet on kirjoitettu nimiavaruudesta, kuten "System.Management.ManagementObjectSearcher", yllä oleva määritys ei ole tarpeen.

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

Alla on koodi, joka etsii ja luettelee asennetun KB: n.

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

Ensimmäisellä rivillä oleva ""ResultTextBox on tekstiruutu saatujen tulosten näyttämiseksi.

luonew ManagementObjectSearcher esiintymän hallitun objektin hakuluokasta ja määrittää WMI-kyselyn argumentiksi. Kyselyn syntaksi on lähes yhtä suuri kuin SQL-lause, joten katso lisätietoja sql: n suhteen. "Win32_QuickFixEngineering" tarkoittaa päivitystä, joka koskee nykyistä käyttöjärjestelmää.

Suorittaa haun WMI-kyselystä, joka on määritetty aiemmin kohdassa "query.Get() ja palauttaa tulokset muodossa ".ManagementObjectCollection

Koska "" luettelee päivitystiedot, saamme "" etukäteen ja kirjoitamme yksilöllisen tunnisteen "HotFixID"ManagementObjectCollectionManagementObject -parametrista.

作成されたフォルダ

Kun teet tämän, päivitystunnukset näkyvät kuvassa esitetyllä tavalla.

Kuten näet, kun suoritat sen, se on hidas vain ensimmäisellä ajokerralla. Toisen kerran jälkeen se on kohtuullisen aikaista.

Ei ole selvää, onko System.Management.dll on hidas ladata ja käsitellä tai WMI-kyselyn suorittaminen hidasta, mutta se, että se on hidas, ei muutu, joten jos olet huolissasi viiveestä sitä käytettäessä, mielestäni on tarpeen ryhtyä toimenpiteisiin, kuten asynkroniseen suoritukseen.