如何离线检测当前 windows 更新状态?

How can I detect current windows update status at offline?

我将使用 wuapi 检测我的 os 更新状态。

用IUpdateSearcher::Search可以,但是这个功能只能在线使用

在离线状态下,我也使用了 IUpdateServiceManager::AddScanPackageService 函数来获取状态,但是这个函数需要 wsusscn2.cab 个文件,而这个文件太大了。

离线时是否有任何其他 wuapi 可以检测 windows 更新状态,或者是否有任何注册表或系统文件可以检测它?

谢谢你的帮助...

即使离线,您也可以使用 Windows 更新 API 搜索来查看需要哪些更新。在调用 Search 或 BeginSearch 之前,您可以将 IUpdateSearcher 对象的 Online 属性 设置为 false。这样做将执行离线扫描,其中 WU 只是重新评估它已经知道的更新。这将离线工作,并且 return 更快地得到结果。您应该注意两个缺点:

  • 离线扫描显然不会return关于自上次计算机执行在线扫描以来发布的任何新更新或修改更新的信息。
  • 如果硬件或软件配置自上次计算机进行在线扫描后发生变化,您的离线扫描可能不会 return 有关因配置变化而变得适用的更新的信息,即使这些更新在上次在线扫描时已经发布。举一个简单的例子,如果您安装了 Office,您的离线扫描将不会 return Office 更新,直到您下次进行在线扫描。这是因为 WU/MU/WSUS/SCCM 服务试图通过仅告知客户端可能适用的更新来节省时间和带宽,而不是将整个更新目录下载到每个客户端。由于你的计算机之前没有安装 Office,因此服务不会将 Office 更新通知你的计算机。