症状
在装有 Windows 7 或 Windows 2008 R2 的计算机上安装 Service Pack 1 (SP1)。安装服务包后,计算机可能会死机或重新启动。如果计算机重新启动,您会在黑屏上收到类似于以下内容的错误消息:
!! 0xc0000034 !! 142/53007 (_0000000000000000.cdf-ms)
注意如果您重新启动计算机,您会收到相同的错误信息。
当用户尝试安装 Service Pack 但没有重新启动计算机以完成安装、安装其他更新然后重新启动计算机时,可能会发生此问题。如果在使用 WSUS 时同时安装 Service Pack 和其他更新,也会出现此问题。
在 Service Pack 安装期间,Windows 的服务功能会维护要执行的操作列表。有些是立即执行的;其他人只能在系统重新启动后才能完成。其中一个列表是原始操作队列 (POQ)。重启时需要执行的POQ操作存放在pending.xml中。在显示失败的场景中,系统会尝试两次完成 POQ 操作。POQ 的第二次尝试失败(因为它已经完成)并导致错误“0xc0000034”。Windows 将此安装阶段的任何故障视为阻塞,并且服务功能会停止机器继续运行。
如果您不是高级用户并且当前在基于 Windows 7 的计算机上遇到此错误,请单击下面的链接在 Microsoft 网站上查看恢复步骤:安装 Windows 7 Service Pack 1 后如何解决“错误 0xc0000034”
解决
要解决此问题,请按照以下方法中的步骤操作。
从 Pending.xml 中删除 POQ 条目
此方法旨在通过创建和运行 .vbs 脚本来解决问题。成功创建并运行 .vbs 脚本后,Windows 7 Service Pack 1 安装应该会成功完成。
笔记
- 此 .vbs 脚本仅适用于 0xc0000034 错误代码,请勿将此脚本用于 0xc0000034 错误以外的问题。
- 如果您是高级用户,我们推荐此方法。
- 要使用此方法,我们建议您可以访问第二台计算机和可移动媒体设备,例如 USB 拇指驱动器。
开始之前
在开始之前找到以下内容:
- 找到第二台可以访问互联网的计算机。您将使用第二台计算机创建脚本 (.vbs) 文件。要创建脚本 (.vbs) 文件,您需要从这篇知识库文章中复制脚本文本。
- 找到可移动媒体设备,例如 USB 拇指驱动器。您将创建的脚本 (.vbs) 文件复制到可移动媒体设备。然后将脚本 (.vbs) 文件传输到出现问题的计算机。
注意如果您无权访问第二台计算机和可移动媒体设备,您可以在出现问题的计算机上创建脚本 (.vbs) 文件。为此,您可以转到“系统恢复选项”,打开命令提示符,然后从命令提示符启动记事本。然后,您将通过键入此知识库文章中的脚本文本来手动创建脚本 (.vbs) 文件。然后将脚本 (.vbs) 文件保存到本地硬盘。然后您就可以运行脚本来完成这些步骤。
第 1 部分:创建脚本 (.vbs) 文件
为此,请按照下列步骤操作:
- 找到第二台可以访问互联网的计算机。
- 打开记事本。
- 将以下文本复制并粘贴到记事本中。
Dim xmlDoc, node, nodeList, fileName, backupFileName, numberOfPOQNodes
Set xmlDoc = CreateObject(“Microsoft.XMLDOM”)
If Wscript.Arguments.Count = 0 Then
WScript.echo(“Error! No XML file specified.”)
Wscript.quit
End If
fileName = WScript.Arguments(0)
backupFileName = Left(fileName, InStrRev(fileName, “.”) – 1) & “_backup.xml”
If Not xmlDoc.load(fileName) Then
WScript.echo(“Failure loading XML file ” & fileName & “.”)
Wscript.quit
End If
xmlDoc.save(backupFileName)
Set nodeList = xmlDoc.documentElement.selectNodes(“POQ”)
numberOfPOQNodes = nodeList.Length
For Each node in nodeList
xmlDoc.documentElement.removeChild(node)
Next
xmlDoc.save(fileName)
Set xmlDoc = Nothing
WScript.echo(numberOfPOQNodes & ” POQ nodes removed. Script completed.”)
第 2 部分:运行脚本 (.vbs) 文件
注意 以下步骤假定您已将脚本 (.vbs) 文件复制到 USB 拇指驱动器。如果您使用不同类型的可移动媒体设备,则步骤可能略有不同。
为此,请按照下列步骤操作:
- 重新启动计算机并开始按键盘上的 F8 键。在 Windows 徽标出现之前,您必须按 F8。如果出现 Windows 徽标,您必须等待 Windows 登录提示出现,然后关闭并重新启动计算机,然后再试一次。
注意:在配置为引导至多个操作系统的计算机上,您可以在出现引导菜单时按 F8 键。 - 使用箭头键在“高级启动选项”区域中选择“修复您的计算机”,然后按 Enter。如果出现提示,请选择要修复的 Windows 7 安装,然后单击“下一步”。
- 选择语言和键盘输入法,然后单击下一步。
- 选择一个用户名,键入您的密码,然后单击“确定”。
- 在系统恢复选项下,记下选择恢复工具下方行中列出的 Windows 7 驱动器号。例如,您可能会看到类似于以下内容的内容。操作系统:(C:) <VolumeName> 上的 Windows 7
注意 在此示例中,Windows 7 的驱动器号将为 C。
- 在系统恢复选项下,单击命令提示符。
- 将包含您之前创建的脚本 (.vbs) 文件的可移动媒体插入 PC。
- 在命令提示符下,导航到包含您之前创建的脚本 (.vbs) 文件的驱动器和目录。例如,如果您之前将创建的 script.vbs 文件保存到 USB 拇指驱动器的根目录,并且与 USB 拇指驱动器关联的驱动器盘符是“E”驱动器,您只需在命令中键入以下内容提示,然后按 Enter。E:
注意 如果您不确定哪个驱动器包含可移动媒体,您可以使用 Diskpart 显示驱动器列表。要运行 Diskpart,请按照下列步骤操作。
- 键入 Diskpart,然后按 Enter。
- 键入列表卷,然后按 Enter。
- 记下包含您之前创建的脚本 (.vbs) 文件的可移动媒体的驱动器。假设您使用 USB 拇指驱动器,驱动器类型将列为“可移动”。
- 要退出 Diskpart,请键入 Exit,然后按 Enter。
- 在命令提示符下,键入以下命令并按 Enter:Cscript Script.vbs <Windows _7_drive_letter>:\Windows\winsxs\pending.xml。其中,<Windows _7_drive_letter>为安装Windows 7操作系统的盘符。
这将运行 Script.vbs 文件中的脚本。脚本完成后,您可能会看到类似于以下内容的消息。
删除了 2 个 POQ 节点。脚本完成
- 要退出命令提示符,请键入 Exit,然后按 Enter。
- 重启你的电脑。Service Pack 1 安装现在应该成功完成。
如果还有什么问题可以查看官方文档。请注意WIN7已经不在更新和维护,请升级WIN10或者WIN11!
需要注意:
此教程为以前自己的老博客搬过来的,是否还可用。需要自己试试了。