שימוש ב- WUA כדי לקבוע את מצב ההתקנה של עדכוני Windows

עודכן דף :
תאריך יצירת דף :

תקציר

השתמש ב- WUA כדי לבדוק אם קיימים עדכונים (ב- KB) המותקנים ב- Windows שבו אתה משתמש כעת.

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

סביבת הפעלה

סביבת בדיקת תפעול

גירסת Windows
  • חלונות 7 אולטימטיבי
גירסת מסגרת .NET
  • 4

דרישות המערכת הנדרשות

גירסת Windows
  • 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# , לחץ באמצעות לחצן העכבר הימני על הפניות מסייר הפתרונות ובחר הוסף הפניות.

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

כאשר תיבת הדו-שיח הוספת הפניה מופיעה, בחר ספריית כתב WUAPI 2.0 מהכרטיסייה COM ולחץ על הלחצן אישור.

אישור אם "WUApiLib" נוסף להגדרות הייחוס של סייר הפתרונות.

הוספת הפניה (VB.NET)

My Project から開くを選択

לקבלת VB.NET, לחץ באמצעות לחצן העכבר הימני על הפרוייקט שלי מסייר הפתרונות ובחר פתח.

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

כאשר המאפיינים נפתחים, לחץ על "עיון" מהכרטיסיה משמאל, לחץ על הוסף כפתור בצד ימין. כמו ב- C#, מוצגת תיבת הדו-שיח הוספת הפניה, לכן בחר "ספריית סוג WUAPI 2.0" מהכרטיסייה "COM" ולחץ על הלחצן אישור.

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::שיטת חיפוש.