ใช้ WUA เพื่อตรวจสอบสถานะการติดตั้งของโปรแกรมปรับปรุงของ Windows

ปรับปรุงหน้า :
วันที่สร้างเพจ :

สรุป

ใช้ WUA เพื่อตรวจสอบการปรับปรุง (ใน KB) ที่ติดตั้งบน Windows ที่คุณกําลังใช้อยู่

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

สภาพแวดล้อมการทํางาน

สภาพแวดล้อมการตรวจสอบการทํางาน

เวอร์ชั่นวินโดวส์
  • หน้าต่าง 7 ที่ดีที่สุด
เวอร์ชันเฟรมเวิร์ก .NET
  • 4

ความต้องการของระบบที่จําเป็น

เวอร์ชั่นวินโดวส์
  • Windows 7 (สภาพแวดล้อมอื่น ๆ ที่ไม่ได้รับการยืนยัน)
เวอร์ชันเฟรมเวิร์ก .NET
  • 4.0 (ไม่มีการยืนยันสภาพแวดล้อมอื่นๆ)

สาร

เกี่ยวกับตัวอย่างนี้

เป้าหมายของตัวอย่างนี้คือการกําหนด KB ที่ติดตั้งบน Windows และวัตถุประสงค์เกือบจะเหมือนกับ "ใช้ WMI เพื่อตรวจสอบสถานะการติดตั้งของการปรับปรุง Windows" อย่างไรก็ตาม ตัวอย่างนี้จะถูกตรวจสอบโดยใช้ "WUA" แทน WMI

คําอธิบาย KB อธิบายไว้ใน "ใช้ WMI เพื่อค้นหาวิธีการติดตั้งการอัปเดต Windows" ดังนั้นโปรดตรวจสอบที่นั่น

WUA คืออะไร?

WUA ย่อมาจาก "ตัวแทนการปรับปรุง Windows" และเป็นชุดของอินเทอร์เฟซ COM ที่อนุญาตให้เข้าถึง Windows Update และ Windows Server Update บริการ (WSUS) คุณสามารถใช้เพื่อกําหนดว่า KB ใดที่ติดตั้งบน Windows

สําหรับคําอธิบายโดยละเอียดของ WUA และการเขียนโปรแกรมด้วย WUA โปรดดูลิงก์ต่อไปนี้:

โปรแกรมที่ค้นหาสถานะการติดตั้ง KB

การเพิ่มการอ้างอิง (C#)

「参照設定」を右クリックして「参照の追加」を選択

เมื่อต้องการใช้ WUA คุณต้องอ้างอิงไลบรารีชนิด WUAPI 2.0 จาก COM

สําหรับโครงการ C# ให้คลิกขวาที่ การอ้างอิงจากโซลูชัน Explorer แล้วเลือก เพิ่มการอ้างอิง

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

เมื่อกล่องโต้ตอบ เพิ่มการอ้างอิง ปรากฏขึ้น ให้เลือก ไลบรารีชนิด WUAPI 2.0 จาก COM แท็บ และคลิกที่ ตกลง ปุ่ม.

ตกลงถ้ามีการเพิ่ม "WUApiLib" ลงในการตั้งค่าการอ้างอิงของตัวสํารวจโซลูชัน

เพิ่มการอ้างอิง (VB.NET)

My Project から開くを選択

สําหรับ VB.NET ให้คลิกขวาที่ โครงการของฉัน จาก โซลูชัน Explorer แล้วเลือก เปิด

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

เมื่อคุณสมบัติเปิดขึ้นให้คลิก "เรียกดู" จากแท็บทางด้านซ้ายคลิกปุ่มเพิ่มทางด้านขวา เช่นเดียวกับใน C#, เพิ่มการอ้างอิงกล่องโต้ตอบจะปรากฏขึ้นดังนั้นเลือก "WUAPI 2.0 ประเภทห้องสมุด" จากแท็บ "COM" และคลิกปุ่ม OK

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

หากคุณกลับไปที่หน้าจอก่อนหน้าและเพิ่ม "ไลบรารีประเภท WUAPI 2.0" ลงในรายการตรงกลางก็โอเค

นอกจากนี้เรามาตรวจสอบ "WUApiLib" จากรายการด้านล่างเพื่อละเว้นคําอธิบายของเนมสเปซในโปรแกรม

ฉาก

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

หน้าจอที่ใช้ในตัวอย่างนี้เป็นหน้าจออย่างง่ายที่มีปุ่มดําเนินการเพื่อตรวจสอบสถานะการติดตั้งของ KB และกล่องข้อความที่แสดงผลลัพธ์

ฉันทํามันใน WPF แต่หน้าจอเดียวกันสามารถกําหนดค่าได้ในแบบฟอร์ม Windows

โปรแกรม

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::วิธีการค้นหา