Windows güncelleştirmelerinin yükleme durumunu belirlemek için WUA'yı kullanma

Sayfa güncel :
Sayfa oluşturma tarihi :

özet

Kullanmakta olduğunuz Windows'ta yüklü olan güncelleştirmeleri (KB cinsinden) denetlemek için WUA'yı kullanın.

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

Çalışma Ortamı

Operasyon kontrol ortamı

Windows Sürümü
  • Windows 7 Ultimate
.NET Framework Sürümü
  • 4

Gerekli sistem gereksinimleri

Windows Sürümü
  • Windows 7 (diğer ortamlar onaylanmamış)
.NET Framework Sürümü
  • 4.0 (başka hiçbir ortam onaylanmadı)

madde

Bu örnek hakkında

Bu örneğin amacı, Windows'ta yüklü olan KB'yi belirlemektir ve amaç "Windows güncelleştirmelerinin yükleme durumunu belirlemek için WMI kullanma" ile hemen hemen aynıdır. Ancak, bu örnek WMI yerine "WUA" kullanılarak denetlenir.

KB açıklaması "Windows güncelleştirmelerinin nasıl yüklendiğini öğrenmek için WMI kullanma" bölümünde açıklanmıştır, bu nedenle burayı kontrol edin.

WUA'nın ne olduğu?

WUA, "Windows Update Aracısı" anlamına gelir ve Windows Update ve Windows Server Update Services'a (WSUS) erişime izin veren bir dizi COM arabirimidir. Windows'ta hangi KB'nin yüklü olduğunu belirlemek için kullanabilirsiniz.

WUA'nın ve WUA'nın programlamasının ayrıntılı bir açıklaması için aşağıdaki bağlantılara bakın:

KB yükleme durumunu arayan programlar

Başvuru Ekleme (C#)

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

WUA'yı kullanmak için, COM'dan WUAPI 2.0 Tür Kitaplığı'na başvurmanız gerekir.

C# projeleri için, Çözüm Gezgini'nden Başvurular'a sağ tıklayın ve Başvuru Ekle'yi seçin.

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

Başvuru Ekle iletişim kutusu göründüğünde, COM sekmesinden WUAPI 2.0 Tür Kitaplığı'nı seçin ve Tamam düğmesini tıklatın.

Çözüm Gezgini başvuru ayarlarına "WUApiLib" eklenirse Tamam.

Referans ekleme (VB.NET)

My Project から開くを選択

VB.NET için, Çözüm Gezgini'nden Projem'e sağ tıklayın ve Aç'ı seçin.

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

Özellikler açıldığında, soldaki sekmeden "Gözat" ı tıklayın, sağdaki Ekle düğmesini tıklayın. C#'ta olduğu gibi, Başvuru Ekle iletişim kutusu görüntülenir, bu nedenle "COM" sekmesinden "WUAPI 2.0 Tür Kitaplığı" nı seçin ve Tamam düğmesine tıklayın.

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

Önceki ekrana dönüp orta listeye "WUAPI 2.0 Tür Kitaplığı" eklerseniz, sorun olmaz.

Ayrıca, programdaki ad alanının açıklamasını atlamak için aşağıdaki listeden "WUApiLib" i kontrol edelim.

sahne

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

Bu örnekte kullanılan ekran, KB'nin yükleme durumunu denetlemek için bir yürütme düğmesi ve sonuçları görüntüleyen bir metin kutusu içeren basit bir ekrandır.

WPF'de yapıyorum, ancak aynı ekran Windows Form'da yapılandırılabilir.

program

C UpdateSession #, sınıfların ve diğer ad alanlarının açıklamasını azaltmak için kodun başına ""using WUApiLib; ekler. VB.NET, ad alanını proje özelliklerine almayı belirttiniz, bu nedenle özel bir şey yazmanıza gerek yok, ancak yazmadıysanız, ".Imports WUApiLib

* Hem C# hem de VB.NET, tüm sınıf adları "" gibi bir ad alanından yazılmışsa,WUApiLib.UpdateSession yukarıdaki belirtim gerekli değildir.

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」追加

Aşağıda, yüklü KB'yi arayan ve listeleyen kod verilmiştir.

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()

İçerik yorumlandığı gibidir.

IUpdateSearcher.SearchYöntemin bağımsız değişkeni olarak belirttiğiniz dizeyle elde ettiklerinizi değiştirebilirsiniz. Daha fazla bilgi için bkz: IUpdateSearcher::Search Yöntemi.