Използвайте WUA, за да определите състоянието на инсталиране на актуализации на Windows
резюме
Използвайте WUA, за да проверите за актуализации (в КБ), които са инсталирани на Windows, който използвате в момента.
Операционна среда
Среда за проверка на операция
Версия на Windows |
|
.NET Рамкова версия |
|
Изисквания към системата, необходими
Версия на Windows |
|
.NET Рамкова версия |
|
вещество
За тази проба
Целта на тази проба е да се определи КБ, която е инсталирана на Windows, и целта е почти същата като "Използвайте WMI, за да определите състоянието на инсталиране на актуализации на Windows." Тази проба обаче се проверява с помощта на "WUA" вместо WMI.
Описанието на КБ е описано в "Използвайте WMI, за да разберете как се инсталират актуализациите на Windows", така че проверете там.
Какво представлява WUA?
WUA означава "Windows Update Agent" и е набор от COM интерфейси, които позволяват достъп до Windows Update и Услуги за актуализиране на Windows Server (WSUS). Можете да го използвате, за да определите коя КБ е инсталирана на Windows.
За подробно обяснение на WUA и програмиране с WUA вижте следните връзки:
- API на агента за актуализиране на Windows
- Има ли начин да получите списък с всички актуализации, които са добавени към моя компютър?
- IUpdateТърсач::Метод на търсене
Програми, които търсят състояние на инсталиране на КБ
Добавяне на препратки (C#)
За да използвате WUA, трябва да направите препратка към библиотеката с видове WUAPI 2.0 от COM.
За c# проекти щракнете с десния бутон препратки от Solution Explorer и изберете Добавяне на препратки.
Когато се появи диалоговият прозорец Добавяне на препратка, изберете WUAPI 2.0 Type Library от раздела COM и щракнете върху OK бутон.
OK, ако "WUApiLib" се добавя към настройките за препратка на Solution Explorer.
Добавяне на препратка (VB.NET)
За VB.NET щракнете с десния бутон върху Моят проект от Solution Explorer и изберете Отвори.
Когато свойствата се отворят, кликнете върху "Преглед" от раздела вляво, щракнете върху бутона Добави вдясно. Както в C#, се показва диалоговият прозорец Добавяне на препратка, така че изберете "WUAPI 2.0 Type Library" от раздела "COM" и кликнете върху OK бутон.
Ако се върнете към предишния екран и добавите "WUAPI 2.0 Type Library" към средния списък, то е OK.
Също така, нека проверим "WUApiLib" от списъка по-долу, за да пропуснат описанието на пространството на имената в програмата.
място
Екранът, използван в тази проба, е прост екран с бутон за изпълнение, за да проверите състоянието на инсталацията на КБ и текстово поле, което показва резултатите.
Правя го в WPF, но същият екран е конфигурируем в Windows Form.
програма
C UpdateSession
# добавя ""using WUApiLib;
към началото на кода, за да се намали описанието на класове и други пространства с имена. В VB.NET сте задали да импортирате пространството на имената в свойствата на проекта, така че не е необходимо да пишете нищо специално, но ако не сте, трябва да добавите ".Imports WUApiLib
* И в C# и VB.NET, ако всички имена на класове са написани от пространство на имената като ",WUApiLib.UpdateSession
горната спецификация не е необходима.
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」追加
По-долу е кодът, който търси и изброява инсталираната KB.
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()
Съдържанието е както е коментирано.
IUpdateSearcher.Search
Можете да промените това, което получавате чрез низа, който задавате като аргумент на метода. За повече информация вижте IUpdateSearcher::Метод на търсене.