WUA を使用したオフライン更新プログラムのスキャン

Windows Update エージェント (WUA) を使うと、Windows Update または Windows Server Update Services (WSUS) サーバーに接続せずに、コンピューターのセキュリティ更新プログラムをスキャンできます。これにより、インターネットに接続されていないコンピューターでもセキュリティ更新プログラムをスキャンできます。

更新プログラムをオフライン スキャンするには、Windows Update から署名済みファイル Wsusscn2.cab をダウンロードする必要があります。

Wsusscn2.cab ファイルは、Microsoft によって署名されたキャビネット ファイルです。 このファイルには、Microsoft が発行したセキュリティ関連の更新プログラムに関する情報が含まれています。 インターネットに接続されていないコンピューターをスキャンして、このようなセキュリティ関連の更新プログラムが存在するか、または必要であるかを確認できます。 Wsusscn2.cab ファイルにセキュリティ更新プログラム自体は含まれていないため、他の方法で必要なセキュリティ関連の更新プログラムを取得してインストールする必要があります。 Windows Update サイトでセキュリティ関連の更新プログラムがリリース、削除、または改訂されると、Wsusscn2.cab ファイルの新しいバージョンが定期的にリリースされます。 最新の Wsusscn2.cab ファイルは、次の場所からダウンロードできます: Wsusscn2.cab のダウンロード

最新の Wsusscn2.cab をダウンロードしたら、そのファイルを AddScanPackageService メソッドに渡し、WUA API を使ってオフライン コンピューターのセキュリティ更新プログラムを検索できます。 WUA は、オフライン スキャンを実行する前に、有効な Microsoft 証明書で Wsusscn2.cab が署名されていることを検証します。

Note

CAB ファイルのオフライン スキャンを実行すると、メモリ使用量が通常よりも高くなる場合があります。 スキャン プロセスに十分なメモリ リソースを割り当てるために、システムに必要な調整を行うことをお勧めします。 これには、追加のプロセッサの構成やページファイルの変更が含まれる場合があります。 十分なメモリ割り当てを確保することは、スキャンを効率的かつ効果的に完了するのに役立ちます。

Note

SHA-1 非推奨イニシアティブに従い、Wsusscn2.cab ファイルは、SHA-1 と SHA-2 の両方のハッシュ アルゴリズム スイート (特に SHA-256) を使ったデュアル署名ではなくなりました。 このファイルは SHA-256 のみを使って署名されるようになりました。 このファイルのデジタル署名を検証する管理者は、単一の SHA-256 署名のみを想定する必要があります。

次の例では、Wsusscn2.cab ファイルを使ってコンピューターをスキャンし、不足している更新プログラムを表示します。

重要

これらのスクリプトの目的は、Windows Update エージェント API の使用法を示し、開発者がこれらの API を使って問題を解決する方法の例を提供することです。 これらのスクリプトは運用環境コードとして意図されたものではありません。また、スクリプトは Microsoft によってサポートされていません (ただし、基となる Windows Update エージェント API はサポートされています)。

Set UpdateSession = CreateObject("Microsoft.Update.Session")
Set UpdateServiceManager = CreateObject("Microsoft.Update.ServiceManager")
Set UpdateService = UpdateServiceManager.AddScanPackageService("Offline Sync Service", "c:\wsusscn2.cab")
Set UpdateSearcher = UpdateSession.CreateUpdateSearcher()

WScript.Echo "Searching for updates..." & vbCRLF

UpdateSearcher.ServerSelection = 3 ' ssOthers

UpdateSearcher.ServiceID = UpdateService.ServiceID

Set SearchResult = UpdateSearcher.Search("IsInstalled=0")

Set Updates = SearchResult.Updates

If searchResult.Updates.Count = 0 Then
    WScript.Echo "There are no applicable updates."
    WScript.Quit
End If

WScript.Echo "List of applicable items on the machine when using wssuscan.cab:" & vbCRLF

For I = 0 to searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    WScript.Echo I + 1 & "> " & update.Title
Next

WScript.Quit