WUA를 사용하여 Windows 업데이트의 설치 상태 확인

페이지 업데이트 :
페이지 생성 날짜 :

요약

WUA를 사용하여 현재 사용 중인 Windows에 설치된 업데이트(KB)를 확인합니다.

KB がインストールされている一覧を表示しています。

운영 환경

작업 확인 환경

윈도우 버전
  • 윈도우 7 궁극
.NET 프레임워크 버전
  • 4

필요한 시스템 요구 사항

윈도우 버전
  • 윈도우 7 (다른 환경은 확인되지 않음)
.NET 프레임워크 버전
  • 4.0 (다른 환경은 확인되지 않음)

물질

이 샘플 정보

이 샘플의 목표는 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# 프로젝트의 경우 솔루션 탐색기에서 참조를 마우스 오른쪽 단추로 클릭하고 참조 추가를 선택합니다.

参照の追加ダイアログで WUAPI 2.0 Type Library を選択して追加しています

참조 추가 대화 상자가 나타나면 COM 탭에서 WUAPI 2.0 형식 라이브러리를 선택하고 확인 단추를 클릭합니다.

"WUApiLib"가 솔루션 탐색기 참조 설정에 추가되면 정상입니다.

참조 추가(VB.NET)

My Project から開くを選択

VB.NET 의 경우 솔루션 탐색기에서 내 프로젝트를 마우스 오른쪽 단추로 클릭하고 열기를 선택합니다.

プロジェクトのプロパティから参照タブを選択し WUAPI 2.0 Type Library の参照を追加しています

속성이 열리면 왼쪽 탭에서 "찾아보기"를 클릭하고 오른쪽의 추가 버튼을 클릭하십시오. C #에서와 마찬가지로 참조 추가 대화 상자가 표시되므로 "COM"탭에서 "WUAPI 2.0 유형 라이브러리"를 선택하고 확인 버튼을 클릭하십시오.

WUAPI 2.0 Type Library が追加されていることを確認し、WUApiLib 名前空間をインポートします

이전 화면으로 돌아가서 중간 목록에 "WUAPI 2.0 유형 라이브러리"를 추가하면 정상입니다.

또한 아래 목록에서 "WUApiLib"를 확인하여 프로그램의 네임 스페이스에 대한 설명을 생략 해 보겠습니다.

장면

KB チェック実行ボタンと検索結果一覧を表示するためのテキストボックスを配置

이 샘플에 사용된 화면은 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를 참조하십시오.