WUA를 사용하여 Windows 업데이트의 설치 상태 확인
요약
WUA를 사용하여 현재 사용 중인 Windows에 설치된 업데이트(KB)를 확인합니다.
운영 환경
작업 확인 환경
윈도우 버전 |
|
.NET 프레임워크 버전 |
|
필요한 시스템 요구 사항
윈도우 버전 |
|
.NET 프레임워크 버전 |
|
물질
이 샘플 정보
이 샘플의 목표는 Windows에 설치된 KB를 확인하는 것이며, 목적은 "WMI를 사용하여 Windows 업데이트의 설치 상태 확인"과 거의 같습니다. 그러나 이 샘플은 WMI 대신 "WUA"를 사용하여 검사됩니다.
KB 설명은 "WMI를 사용하여 Windows 업데이트 설치 방법 확인"에 설명되어 있으므로 여기에서 확인하십시오.
WUA란 무엇입니까?
WUA는 "Windows Update Agent"의 약자이며 Windows Update 및 WSUS(Windows Server Update Services)에 대한 액세스를 허용하는 COM 인터페이스 집합입니다. 이를 사용하여 Windows에 설치된 KB를 확인할 수 있습니다.
WUA 및 WUA를 사용한 프로그래밍에 대한 자세한 설명은 다음 링크를 참조하십시오.
KB 설치 상태를 검색하는 프로그램
참조 추가(C#)
WUA를 사용하려면 COM에서 WUAPI 2.0 형식 라이브러리를 참조해야 합니다.
C# 프로젝트의 경우 솔루션 탐색기에서 참조를 마우스 오른쪽 단추로 클릭하고 참조 추가를 선택합니다.
참조 추가 대화 상자가 나타나면 COM 탭에서 WUAPI 2.0 형식 라이브러리를 선택하고 확인 단추를 클릭합니다.
"WUApiLib"가 솔루션 탐색기 참조 설정에 추가되면 정상입니다.
참조 추가(VB.NET)
VB.NET 의 경우 솔루션 탐색기에서 내 프로젝트를 마우스 오른쪽 단추로 클릭하고 열기를 선택합니다.
속성이 열리면 왼쪽 탭에서 "찾아보기"를 클릭하고 오른쪽의 추가 버튼을 클릭하십시오. C #에서와 마찬가지로 참조 추가 대화 상자가 표시되므로 "COM"탭에서 "WUAPI 2.0 유형 라이브러리"를 선택하고 확인 버튼을 클릭하십시오.
이전 화면으로 돌아가서 중간 목록에 "WUAPI 2.0 유형 라이브러리"를 추가하면 정상입니다.
또한 아래 목록에서 "WUApiLib"를 확인하여 프로그램의 네임 스페이스에 대한 설명을 생략 해 보겠습니다.
장면
이 샘플에 사용된 화면은 KB의 설치 상태를 확인하는 실행 단추와 결과를 표시하는 텍스트 상자가 있는 간단한 화면입니다.
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::Search Method를 참조하십시오.