使用 WUA 脱机扫描更新

Windows 更新代理 (WUA) 可用于在不连接到 Windows 更新或 Windows Server Update Services (WSUS) 服务器的情况下扫描计算机的安全更新,从而使未连接到 Internet 的计算机能够扫描安全更新。

脱机扫描更新需要从 Windows 更新下载签名文件 Wsusscn2.cab。

Wsusscn2.cab 文件是由 Microsoft 签名的 Cabinet 文件。 此文件包含有关 Microsoft 发布的与安全相关的更新的信息。 可以扫描未连接到 Internet 的计算机,以查看是否存在或需要这些与安全相关的更新。 Wsusscn2.cab 文件本身不包含安全更新,因此必须通过其他方式获取并安装任何所需的安全相关更新。 随着 Windows 更新站点上发布、删除或修订与安全相关的更新,Wsusscn2.cab 文件的新版本会定期发布。 最新的 Wsusscn2.cab 文件可在以下位置下载:下载 Wsusscn2.cab

下载最新的 Wsusscn2.cab 后,可以将该文件提供给 AddScanPackageService 方法,并且可以使用 WUA API 搜索脱机计算机以获取安全更新。 在运行脱机扫描之前,WUA 将验证 Wsusscn2.cab 是否已由有效的 Microsoft 证书签名。

注意

对 CAB 文件执行离线扫描时,可能会遇到高于正常内存使用量的情况。 建议对系统进行必要的调整,以便为扫描过程分配足够的内存资源。 这可能包括配置其他处理器以及修改页面文件。 确保分配足够的内存将有助于高效、有效地完成扫描。

注意

根据 SHA-1 弃用计划,Wsusscn2.cab 文件不再使用 SHA-1 和 SHA-2 哈希算法套件(特别是 SHA-256)进行双重签名。 此文件现在仅使用 SHA-256 进行签名。 验证此文件的数字签名的管理员现在应仅需要单个 SHA-256 签名。

示例

以下示例使用 Wsusscn2.cab 文件扫描计算机并显示缺少的更新。

重要

这些脚本目的是演示如何使用 Windows 更新代理 API,并提供开发人员如何使用这些 API 解决问题的示例。 这些脚本不打算作为生产代码,Microsoft 也不支持这些脚本(尽管支持基础 Windows 更新代理 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