A WUA használata a Windows-frissítések telepítési állapotának meghatározásához
összefoglalás
A WUA segítségével keresse meg a jelenleg használt Windowsra telepített frissítéseket (KB-ban).
Működési környezet
Művelet-ellenőrzési környezet
Windows verzió |
|
NET-keretrendszer verziója |
|
Rendszerkövetelmények szükségesek
Windows verzió |
|
NET-keretrendszer verziója |
|
lényeg
A mintáról
Ennek a mintának az a célja, hogy meghatározza a Windows rendszerre telepített tudásbázist, és a cél majdnem megegyezik a "WMI használata a Windows-frissítések telepítési állapotának meghatározásához" kifejezéssel. Ezt a mintát azonban a WMI helyett a "WUA" használatával ellenőrzik.
A tudásbázis leírását a "WMI használata a Windows-frissítések telepítésének megismeréséhez" című témakör ismerteti, ezért ellenőrizze ott.
Mi az a WUA?
A WUA a "Windows Update Agent" rövidítése, és olyan COM-felületek halmaza, amelyek lehetővé teszik a Windows Update és a Windows Server Update Services (WSUS) elérését. Segítségével meghatározhatja, hogy melyik KB van telepítve a Windows rendszerre.
A WUA és a WUA-val folytatott programozás részletes magyarázatát lásd az alábbi linkeken:
- Windows Update Agent API
- Van mód arra, hogy listát kapjunk a számítógépemhez hozzáadott összes frissítésről?
- IUpdateSearcher::Keresési módszer
A KB telepítési állapotát kereső programok
Hivatkozások hozzáadása (C#)
A WUA használatához hivatkoznia kell a WUAPI 2.0 típustárra a COM-ból.
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.
Amikor megjelenik a Hivatkozás hozzáadása párbeszédpanel, válassza a WUAPI 2.0 típustár lehetőséget a COM lapon, majd kattintson az OK gombra.
OK, ha a "WUApiLib" hozzá van adva a Megoldáskezelő referenciabeállításaihoz.
Hivatkozás hozzáadása (VB.NET)
Ha VB.NET, kattintson a jobb gombbal a Saját projekt elemre a Megoldáskezelőben, és válassza a Megnyitás parancsot.
Amikor a tulajdonságok megnyílnak, kattintson a bal oldali fülön a "Tallózás" gombra, kattintson a jobb oldalon található Hozzáadás gombra. A C#-hoz hasonlóan megjelenik a Hivatkozás hozzáadása párbeszédpanel, ezért válassza a "WUAPI 2.0 Type Library" lehetőséget a "COM" fülön, majd kattintson az OK gombra.
Ha visszatér az előző képernyőre, és hozzáadja a "WUAPI 2.0 Type Library" -t a középső listához, az rendben van.
Ezenkívül ellenőrizzük a "WUApiLib" -et az alábbi listából, hogy kihagyjuk a névtér leírását a programban.
jelenet
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 UpdateSession
# hozzáadja a "" szótusing WUApiLib;
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 importálja a névteret a projekt tulajdonságai között, így nem kell semmi különlegeset írnia, de ha még nem tette meg, hozzá kell adnia a ".Imports WUApiLib
* Mind a C#-ban, mind a VB.NET, ha az összes osztálynevet olyan névtérből írják, mint például a ",WUApiLib.UpdateSession
a fenti specifikáció nem szükséges.
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 WUApiLib; // 参照から「COM」より「WUAPI 2.0 Type Library」追加
Az alábbiakban látható az a kód, amely megkeresi és felsorolja a telepített KB-t.
C #
this.ResultTextBox.Text = "";
// アップデートセッション 作成
UpdateSession us = new UpdateSession();
// アップデート検索インスタンス作成
IUpdateSearcher searcher = us.CreateUpdateSearcher();
// 「インストールされているもの」「ソフトウェア」で検索し、結果を取得
ISearchResult result = searcher.Search("IsInstalled=1 and Type='Software'");
StringBuilder builder = new StringBuilder();
// アップデート一覧からタイトル一覧を取得する。
foreach (IUpdate u in result.Updates)
{
builder.AppendLine("[" + u.Title + "]");
}
builder.AppendLine();
// アップデート一覧から KB の番号だけ取得する。
foreach (IUpdate u in result.Updates)
{
foreach (string str in u.KBArticleIDs)
{
builder.AppendLine(str);
}
}
// 取得した KB 一覧をセット
this.ResultTextBox.Text = builder.ToString();
VB.NET
Me.ResultTextBox.Text = ""
' アップデートセッション 作成
Dim us As New UpdateSession()
' アップデート検索インスタンス作成
Dim searcher As IUpdateSearcher = us.CreateUpdateSearcher()
' 「インストールされているもの」「ソフトウェア」で検索し、結果を取得
Dim result As ISearchResult = searcher.Search("IsInstalled=1 and Type='Software'")
Dim builder As New System.Text.StringBuilder()
' アップデート一覧からタイトル一覧を取得する。
For Each u As IUpdate In result.Updates
builder.AppendLine("[" + u.Title + "]")
Next
builder.AppendLine()
' アップデート一覧から KB の番号だけ取得する。
For Each u As IUpdate In result.Updates
For Each str As String In u.KBArticleIDs
builder.AppendLine(str)
Next
Next
' 取得した KB 一覧をセット
Me.ResultTextBox.Text = builder.ToString()
A tartalom a megjegyzésnek megfelelően van megadva.
IUpdateSearcher.Search
A metódus argumentumaként megadott karakterlánccal módosíthatja, hogy mit kapjon. További információ: IUpdateSearcher::Keresési módszer.