我正在更新一大堆运行 Windows 2008R2 SP1 的服务器。大约有 120 个更新需要安装。我发现,如果我运行所有更新,需要数小时和数小时,然后失败并需要数小时和数小时才能恢复。
我开始小批量更新。先前失败的相同更新有效。但有时小批量(5-10)错误......但如果我一个一个地运行更新,那么它们就可以工作。
错误代码是 80070643。我可以发布 windowsupdate.log 但我没有看到任何其他有用的信息。
MS对此有一个知识库(http://support.microsoft.com/kb/976982),但我尝试按照他们的建议做......起初似乎它会解决它,但后来我还是遇到了同样的问题一次又一次的错误。
每个人都遇到这种情况吗?当然,其他人会安装新服务器,在 Windows 上运行,然后进行更新。
我的更新来自我本地的 WSUS 服务器,但我认为这并不重要——我直接从 MS 服务器上遇到了类似的问题。
也许这个 http://support.microsoft.com/kb/947821 可以提供帮助?
它说: 修复 Windows 更新损坏错误,例如 0x80070002 和 0x80070057
Windows 更新损坏错误会阻止安装 Windows 更新和服务包。例如,如果系统文件损坏,可能无法安装更新。如果您看到的错误在以下列表中,请尝试本文中的解决方案。
经过大量的工作、研究和与不同人的交流,这里是我发现的工作和尝试的总结。
如果从未安装远程桌面服务,则从 WSUS 更新 Windows 2008R2 服务器不是问题。例如,我能够从全新安装的 Windows 2008R2 SP1 更新我设置为域控制器的 2 台服务器。这需要应用大约 150 次更新。重启了几次,一切都安装得很好。一些失败,但他们没有在需要后出现 - 所以他们被其他有效的更新所取代。
安装了 RDS 的服务器基本上注定要失败。安装更新会很痛苦。这是一些 MVP 家伙对此的评论。但即使在单用户模式下,这也是一种痛苦。
所以这个故事的寓意 - 当您计划设置 RDS 服务器时,安装 Windows但不是 RDS,请执行所有 Windows 更新。然后安装 RDS 并执行所需的任何进一步更新。
故事的第二个寓意 - 定期更新您的 RDS 服务器,这样您就不必在几个月后因手动安装数百个更新而遭受痛苦。
---更多内容 - 稍后---
今天,我的团队发现了一些有用的东西——将以下注册表项:HKLM\SYSTEM\CurrentControlSet\services\TrustedInstaller\BlockTimeoutIncrement 设置为更高的值(比如 36000)。这也可以通过使用“增加 Win Update Timeout”的组策略来完成。
我们发现这一点是因为我们发现 Windows 更新日志指出更新已超时,因此它正在回滚。
设置此选项可让 Windows 更新在数小时后完成安装并安装更新。
没有告诉我们为什么需要这么长时间 - 这仍然不正常。但至少我们能够进行更新。
更
看来我们已经解决了!我们开始在我们的服务器上遇到其他错误,所有这些导致发现管理员 NTUSER.DAT 文件为 1.5GB,并使用大量可用资源来加载注册表文件。这导致普通用户无法登录(当管理员登录时,这是......基本上总是)。
无论如何,所以我删除了管理员用户的本地配置文件,通过登录重新创建了它。NTUSER.DAT 小于 1MB。
好的,所以我们有一个想法 - 这是否可以解决我们的 Windows 更新问题......好吧,看起来确实如此。我们现在可以像在我们的非 RDP 服务器上一样安装 Windows 更新。
所以看起来是因为管理员用户的注册表膨胀,这是我们在执行 Windows 更新(或安装热修复)时登录的用户,安装时间过长并且超时。