我有一台运行 Windows Server 2012 R2 的 Windows Azure VM,自 2016 年 4 月以来一直无法安装更新。控制面板中的“查看更新历史记录”屏幕列出了每次机器重启时不断尝试安装更新而导致的数百次连续失败。
每个更新的详细信息窗口类似于:
Windows Server 2012 R2 更新 (KB3133690)
- 安装日期:2016-04-25 10:34
- 安装状态:失败
- 错误详细信息:代码 800F0922 获取有关此错误的帮助
- 更新类型:推荐
安装此更新以解决 Windows 中的问题。有关此更新中包含的问题的完整列表,请参阅相关的 Microsoft 知识库文章以获取更多信息。安装此更新后,您可能需要重新启动计算机。
更多信息: http://support.microsoft.com/kb/3133690
帮助和支持: http://support.microsoft.com
(像往常一样,“获取有关此错误的帮助”链接毫无用处,只会打开一个 Windows 帮助和支持窗口,上面只显示“获取搜索结果...我们找不到任何结果。请尝试以下操作:”。呃,
Windows 事件日志中也充斥着如下事件:
- 日志名称:系统
- 来源:WindowsUpdateClient
- 事件 ID:20
- 级别:错误
- 用户:SYSTEM
- OpCode:安装安装失败:Windows 无法安装以下更新,错误为 0x800F0922:Windows Server 2012 R2 的安全更新 (KB3159398)。
应用程序事件日志包含更多有用的信息:
- 日志名称:应用程序
- 来源:Windows 错误报告
- 事件 ID:1001
- 级别:信息
- 用户:N/A 故障存储桶,类型 0 事件名称:WindowsUpdateFailure3 响应:不可用 Cab Id:0
问题签名:P1:7.9.9600.18235 P2:800f0922 P3:BA0F75FF-19C3-4CBD-A3F3-EF5B5C0F88BF P4:安装 P5:202 P6:0 P7:0 P8:AutomaticUpdatesWuApp P9:{7971F918-A847-4430-9279-4A52D1EFE18D} P10:0
附加文件:C:\Windows\WindowsUpdate.log C:\Windows\SoftwareDistribution\ReportingEvents.log C:\Windows\Logs\CBS\CBS.log
这些文件可能在此处可用:C:\ProgramData\Microsoft\Windows\WER\ReportQueue\NonCritical_7.9.9600.18235_(Redacted)
分析符号: 重新检查解决方案:0 报告 ID:(已编辑)报告状态:4 哈希存储桶:
服务器将重新启动以安装更新,然后停止并立即执行回滚,正常重启将持续 15 分钟以上。
日志文件C:\Windows\WindowsUpdate.log
没有提供任何线索 - 它没有报告任何明显的错误或警告 - 除了关于无法使用计量连接 API 的过多消息:“警告:无法从 NLM 获取网络成本信息,假设网络未计量,错误 = 0x80240037”。
该C:\Windows\SoftwareDistribution\ReportingEvents.log
文件仅包含与 Windows 更新控制面板相同的文本:“失败内容安装安装失败:Windows 无法安装以下更新,错误 0x800f0922:Windows Server 2012 R2 的安全更新(KB3162343)。”
最后,C:\Windows\Logs\CBS\CBS.log
是一个 180MB+ 大小的文本文件,我浏览了一下但没有发现任何明显的东西。
答案1
总结:
清除您的C:\Windows\Temp
目录和其他临时目录以获得良好的效果 - 然后它应该可以正常安装更新。
解释:
由于这是 Azure VM,因此可以使用 Microsoft 的“基本”支持层 - 虽然安排电话花了 3 天时间,但支持人员今天就找到了解决方法。
他在CBS.log
文件中发现了这一行(由我修剪和整理):
2016-08-16 20:26:50,错误 CSI 00000006@2016/8/16:20:26:50.808 (F) CMIADAPTER:来自 AI 的内部错误消息 HRESULT = 8004402f [错误,设施=FACILITY_ITF,代码=16431 (0x402f)] [ [210]“解析 MOF 文件:C:\Windows\system32\wbem\NetTCPIP.mof 函数 CMofLexer::CMofLexer 第 614 行出现错误 80 C:\Windows\system32\wbem\NetTCPIP.mof (1): 错误语法 0X8004402f: 创建临时文件时出错” ] [gle=0x80004005]
重要的是这个错误:
创建临时文件时出错
他指示我将系统和用户定义中的默认环境变量:TEMP
和更改为并确保必须。TMP
C:\TEMP
Everyone
Full Access
C:\TEMP
重新启动后,安装的堵塞更新不再出现任何问题。
成功安装这些更新后,我删除了原始 C:\Windows\Temp 目录中的所有文件(这花了 5 多分钟,有很多深层嵌套的文件)。然后,我将 TMP 和 TEMP 环境变量重置为C:\Windows\Temp
并重新启动。
然后准备安装两个新的更新,并且安装顺利完成。
因此,我认为问题在于 Temp 目录中的错误数据阻止了更新执行任何操作。
2017 年年中更新:我最近在 Windows 10 笔记本电脑上遇到了类似事件,错误代码相同。我立即进入目录C:\Windows\Temp
,发现里面有很多文件(大约 16,000 个文件和文件夹),其中还包括深层嵌套的文件夹。删除目录中的所有内容并重新启动后,我能够再次安装更新。
答案2
我可以通过增加分配给系统保留分区的大小来解决这个问题。
搜索所有“错误”实例%windir%\Logs\CBS\CBS.log
文件中,我发现以下条目:
Error CSI 00000261@2019/5/26:18:06:12.575 (F) base\wcp\plugins\bfsvc\bfsvc.cpp(218): Error HRESULT_FROM_WIN32(ERROR_DISK_FULL) originated in function Windows::WCP::Bfsvc::BasicInstaller::Install expression: HRESULT_FROM_WIN32(GetLastError())
[gle=0x80004005]
在 Google 上搜索此错误消息时,我发现了以下线程,其中建议根本问题是系统保留分区没有足够的可用空间来安装更新,并且可以使用以下方法增加它MiniTool 分区向导免费版:
以下是我用来扩展系统保留分区并成功安装更新的步骤。
我首先选择我的主分区(C:),然后单击移动/调整大小然后从主分区中减去 650MB,在未分配空间中留下大约 650MB,如下图所示。650MB 可能没有必要,我选择这个数量只是为了让我的系统保留分区有 1GB 的空间。
然后我选择了系统保留分区并点击移动/调整大小再次将大小增加 650MB,直到没有剩余的未分配空间并且驱动器的大小约为 1GB。
完成这些操作后,您需要单击“应用”按钮(屏幕截图中显示为灰色),然后您的计算机将重新启动,以便驱动器可以自由操作。
然后我就可以毫无问题地安装更新了。希望这也能帮助别人!如果它对你有帮助,请将其标记为答案!