Sử dụng WUA để xác định trạng thái cài đặt của các bản cập nhật Windows
tóm tắt
Sử dụng WUA để kiểm tra các bản cập nhật (tính bằng KB) được cài đặt trên Windows bạn hiện đang sử dụng.
Môi trường hoạt động
Môi trường kiểm tra hoạt động
Phiên bản Windows |
|
Phiên bản .NET framework |
|
Yêu cầu hệ thống cần thiết
Phiên bản Windows |
|
Phiên bản .NET framework |
|
chất
Về mẫu này
Mục tiêu của mẫu này là xác định KB được cài đặt trên Windows và mục đích gần giống như "Sử dụng WMI để xác định trạng thái cài đặt của các bản cập nhật Windows." Tuy nhiên, mẫu này được kiểm tra bằng cách sử dụng "WUA" thay vì WMI.
Mô tả KB được mô tả trong "Sử dụng WMI để tìm hiểu cách cài đặt các bản cập nhật Windows", vì vậy hãy kiểm tra ở đó.
WUA là gì?
WUA là viết tắt của "Windows Update Agent" và là một tập hợp các giao diện COM cho phép truy cập vào Windows Update và Windows Server Update Services (WSUS). Bạn có thể sử dụng nó để xác định KB nào được cài đặt trên Windows.
Để biết giải thích chi tiết về WUA và lập trình với WUA, hãy xem các liên kết sau:
- API Windows Update Agent
- Có cách nào để có được danh sách tất cả các bản cập nhật đã được thêm vào máy tính của tôi không?
- IUpdateSearcher::Phương pháp tìm kiếm
Các chương trình tìm kiếm trạng thái cài đặt KB
Thêm tài liệu tham khảo (C#)
Để sử dụng WUA, bạn phải tham khảo Thư viện Loại WUAPI 2.0 từ COM.
Đối với các dự án C#, nhấp chuột phải vào References from Solution Explorer và chọn Add References.
Khi hộp thoại Thêm tài liệu tham khảo xuất hiện, hãy chọn Thư viện loại WUAPI 2.0 từ COM tab và nhấp vào OK cái nút.
OK nếu "WUApiLib" được thêm vào cài đặt tham chiếu Của Trình khám phá Giải pháp.
Thêm tham chiếu (VB.NET)
Ví VB.NET, bấm chuột phải vào Dự án của tôi từ Trình khám phá giải pháp và chọn Mở.
Khi các thuộc tính mở ra, nhấp vào "Duyệt qua" từ tab bên trái, nhấp vào nút Thêm ở bên phải. Như trong C#, hộp thoại Thêm Tham chiếu được hiển thị, vì vậy hãy chọn "Thư viện Loại WUAPI 2.0" từ tab "COM" và nhấp vào nút OK.
Nếu bạn quay lại màn hình trước đó và thêm "Thư viện loại WUAPI 2.0" vào danh sách giữa, điều đó là OK.
Ngoài ra, hãy kiểm tra "WUApiLib" từ danh sách bên dưới để bỏ qua mô tả về không gian tên trong chương trình.
cảnh
Màn hình được sử dụng trong mẫu này là một màn hình đơn giản với nút thực thi để kiểm tra trạng thái cài đặt của KB và hộp văn bản hiển thị kết quả.
Tôi đang làm cho nó trong WPF, nhưng cùng một màn hình có thể được cấu hình trong Windows Form.
chương trình
C UpdateSession
# thêm ""using WUApiLib;
vào đầu mã để giảm mô tả các lớp và các không gian tên khác. Trong VB.NET, bạn đã chỉ định nhập không gian tên trong thuộc tính dự án, vì vậy bạn không cần phải viết bất cứ điều gì đặc biệt, nhưng nếu bạn chưa có, bạn cần phải thêm ".Imports WUApiLib
* Trong cả C# và VB.NET, nếu tất cả các tên lớp được viết từ một không gian tên như ",WUApiLib.UpdateSession
thì đặc tả trên là không cần thiết.
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」追加
Dưới đây là mã tìm kiếm và liệt kê KB đã cài đặt.
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()
Nội dung như đã nhận xét.
IUpdateSearcher.Search
Bạn có thể thay đổi những gì bạn nhận được bằng chuỗi bạn chỉ định làm đối số của phương thức. Để biết thêm thông tin, hãy xem IUpdateSearcher::Phương pháp tìm kiếm.