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