Utilitzeu WUA per determinar l'estat d'instal·lació de les actualitzacions de Windows
resum
Utilitzeu WUA per comprovar si hi ha actualitzacions (en KB) instal·lades al Windows que utilitzeu actualment.
Entorn operatiu
Entorn de comprovació de l'operació
Versió de Windows |
|
Versió .NET Framework |
|
Requisits del sistema requerits
Versió de Windows |
|
Versió .NET Framework |
|
substància
Sobre aquesta mostra
L'objectiu d'aquesta mostra és determinar la KB que s'instal·la a Windows i el propòsit és gairebé el mateix que "Utilitzeu WMI per determinar l'estat d'instal·lació de les actualitzacions de Windows". No obstant això, aquesta mostra es comprova mitjançant "WUA" en lloc de WMI.
La descripció de la KB es descriu a "Utilitza WMI per esbrinar com s'instal·len les actualitzacions de Windows", així que comprova-ho allà.
Què és WUA?
WUA significa "Agent d'actualització de Windows" i és un conjunt d'interfícies COM que permeten accedir a Windows Update i Windows Server Update Services (WSUS). Podeu utilitzar-lo per determinar quina KB està instal·lada a Windows.
Per a una explicació detallada de WUA i programació amb WUA, vegeu els següents enllaços:
- API de l'agent del Windows Update
- Hi ha alguna manera d'obtenir una llista de totes les actualitzacions que s'han afegit al meu ordinador?
- IUpdateSearcher::Mètode de cerca
Programes que cerquen l'estat de la instal·lació de KB
Addició de referències (C#)
Per utilitzar WUA, heu de fer referència a la biblioteca de tipus WUAPI 2.0 des de COM.
Per als projectes C#, feu clic amb el botó dret a Referències de l'Explorador de solucions i trieu Afegeix referències.
Quan aparegui el diàleg Afegeix referència, seleccioneu Biblioteca de tipus WUAPI 2.0 des de la pestanya COM i feu clic al botó D'acord.
D'acord si "WUApiLib" s'afegeix a la configuració de referència de l'Explorador de solucions.
Afegir una referència (VB.NET)
Per VB.NET, feu clic amb el botó dret a El meu projecte de l'Explorador de solucions i trieu Obre.
Quan s'obrin les propietats, feu clic a "Examinar" des de la pestanya de l'esquerra, feu clic al botó Afegeix a la dreta. Com a C#, es mostra el diàleg Afegeix referència, així que seleccioneu "Wuapi 2.0 Type Library" a la pestanya "COM" i feu clic al botó D'acord.
Si torneu a la pantalla anterior i afegiu "Biblioteca de tipus WUAPI 2.0" a la llista mitjana, està bé.
A més, comprovem "WUApiLib" de la llista següent per ometre la descripció de l'espai de noms del programa.
escena
La pantalla utilitzada en aquesta mostra és una pantalla senzilla amb un botó d'execució per comprovar l'estat d'instal·lació de la KB i un quadre de text que mostra els resultats.
Ho faig en WPF, però la mateixa pantalla és configurable en Windows Form.
programa
C UpdateSession
# afegeix ""using WUApiLib;
al començament del codi per reduir la descripció de classes i altres espais de noms. En VB.NET, heu especificat importar l'espai de noms a les propietats del projecte, de manera que no necessiteu escriure res especial, però si no ho heu fet, heu d'afegir ".Imports WUApiLib
* Tant en C# com en VB.NET, si tots els noms de classe s'escriuen des d'un espai de noms com ",WUApiLib.UpdateSession
no és necessària l'especificació anterior.
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」追加
A continuació es mostra el codi que cerca i llista la KB instal·lada.
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()
El contingut és com s'ha comentat.
IUpdateSearcher.Search
Podeu canviar el que obteniu per la cadena que especifiqueu com a argument del mètode. Per obtenir més informació, vegeu IUpdateSearcher::Mètode de cerca.