Использование WUA для определения состояния установки обновлений Windows
сводка
Используйте WUA для проверки наличия обновлений (в КБ), установленных в windows, которую вы используете в настоящее время.
Операционная среда
Среда проверки операций
Версия для Windows |
|
Версия платформы .NET Framework |
|
Требуемые системные требования
Версия для Windows |
|
Версия платформы .NET Framework |
|
вещество
Об этом примере
Цель этого примера — определить базу знаний, установленную в Windows, и ее назначение почти такое же, как «Использование WMI для определения состояния установки обновлений Windows». Однако этот пример проверяется с помощью "WUA" вместо WMI.
Описание базы знаний описано в разделе «Использование WMI для определения способа установки обновлений Windows», поэтому проверьте его.
Что такое АВП?
WUA расшифровывается как «Агент Центра обновления Windows» и представляет собой набор COM-интерфейсов, которые обеспечивают доступ к Центру обновления Windows и службам Windows Server Update Services (WSUS). Вы можете использовать его, чтобы определить, какая база знаний установлена в Windows.
Подробное объяснение АВП и программирования с помощью АВП можно найти по следующим ссылкам:
- API агента Центра обновления Windows
- Есть ли способ получить список всех обновлений, добавленных на мой компьютер?
- IUpdateSearcher::Метод поиска
Программы, выполняющие поиск состояния установки базы знаний
Добавление ссылок (C#)
Чтобы использовать WUA, необходимо ссылаться на библиотеку типов WUAPI 2.0 из COM.
Для проектов C# щелкните правой кнопкой мыши Ссылки из обозревателя решений и выберите Добавить ссылки.
Когда появится диалоговое окно Добавление ссылки, выберите Библиотека типов WUAPI 2.0 на вкладке COM и нажмите кнопку ОК.
ОК, если "WUApiLib" добавлен в справочные параметры обозревателя решений.
Добавить ссылку (VB.NET)
Чтобы VB.NET, щелкните правой кнопкой мыши Мой проект в обозревателе решений и выберите команду Открыть.
Когда свойства откроются, нажмите «Обзор» на вкладке слева, нажмите кнопку «Добавить» справа. Как и в C#, отображается диалоговое окно «Добавить ссылку», поэтому выберите «WuAPI 2.0 Type Library» на вкладке «COM» и нажмите кнопку OK.
Если вы вернетесь на предыдущий экран и добавите «WUAPI 2.0 Type Library» в средний список, все в порядке.
Кроме того, давайте проверим «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」追加
Ниже приведен код, который выполняет поиск и перечисляет установленную базу знаний.
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::Search.