Utilizzare WUA per determinare lo stato di installazione degli aggiornamenti di Windows
sommario
Utilizzare WUA per verificare la disponibilità di aggiornamenti (in KB) installati in Windows attualmente in uso.
Ambiente operativo
Ambiente di controllo del funzionamento
Versione Windows |
|
Versione di .NET Framework |
|
Requisiti di sistema richiesti
Versione Windows |
|
Versione di .NET Framework |
|
sostanza
Informazioni su questo esempio
L'obiettivo di questo esempio è determinare la KB installata in Windows e lo scopo è quasi lo stesso di "Utilizzare WMI per determinare lo stato di installazione degli aggiornamenti di Windows". Tuttavia, questo esempio viene controllato utilizzando "WUA" anziché WMI.
La descrizione KB è descritta in "Usa WMI per scoprire come vengono installati gli aggiornamenti di Windows", quindi controlla lì.
Cos'è WUA?
WUA è l'acronimo di "Windows Update Agent" ed è un insieme di interfacce COM che consentono l'accesso a Windows Update e Windows Server Update Services (WSUS). È possibile utilizzarlo per determinare quale KB è installato in Windows.
Per una spiegazione dettagliata di WUA e della programmazione con WUA, vedere i seguenti collegamenti:
- API dell'agente di Windows Update
- C'è un modo per ottenere un elenco di tutti gli aggiornamenti che sono stati aggiunti al mio computer?
- Metodo IUpdateSearcher::Metodo di ricerca
Programmi che cercano lo stato di installazione KB
Aggiunta di riferimenti (C#)
Per utilizzare WUA, è necessario fare riferimento alla libreria dei tipi WUAPI 2.0 da COM.
Per i progetti C#, fare clic con il pulsante destro del mouse su Riferimenti da Esplora soluzioni e scegliere Aggiungi riferimenti.
Quando viene visualizzata la finestra di dialogo Aggiungi riferimento, selezionare LIBRERIA dei tipi WUAPI 2.0 dalla scheda COM e fare clic sul pulsante OK.
OK se "WUApiLib" viene aggiunto alle impostazioni di riferimento di Esplora soluzioni.
Aggiungere un riferimento (VB.NET)
Per VB.NET, fare clic con il pulsante destro del mouse su Progetto personale in Esplora soluzioni e scegliere Apri.
Quando le proprietà si aprono, fai clic su "Sfoglia" dalla scheda a sinistra, fai clic sul pulsante Aggiungi a destra. Come in C#, viene visualizzata la finestra di dialogo Aggiungi riferimento, quindi selezionare "WUAPI 2.0 Type Library" dalla scheda "COM" e fare clic sul pulsante OK.
Se si torna alla schermata precedente e si aggiunge "WUAPI 2.0 Type Library" all'elenco centrale, è OK.
Inoltre, controlliamo "WUApiLib" dall'elenco seguente per omettere la descrizione dello spazio dei nomi nel programma.
scena
La schermata utilizzata in questo esempio è una semplice schermata con un pulsante di esecuzione per controllare lo stato di installazione della KB e una casella di testo che visualizza i risultati.
Lo sto facendo in WPF, ma la stessa schermata è configurabile in Windows Form.
programma
C UpdateSession
# aggiunge ""using WUApiLib;
all'inizio del codice per ridurre la descrizione delle classi e di altri spazi dei nomi. In VB.NET, hai specificato di importare lo spazio dei nomi nelle proprietà del progetto, quindi non è necessario scrivere nulla di speciale, ma se non l'hai fatto, devi aggiungere ".Imports WUApiLib
* Sia in C# che in VB.NET, se tutti i nomi di classe sono scritti da uno spazio dei nomi come ",WUApiLib.UpdateSession
la specifica di cui sopra non è necessaria.
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」追加
Di seguito è riportato il codice che cerca ed elenca i KB installati.
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()
Il contenuto è come commentato.
IUpdateSearcher.Search
È possibile modificare ciò che si ottiene dalla stringa specificata come argomento del metodo. Per ulteriori informazioni, vedere Metodo IUpdateSearcher::Search.