排查 Windows 启动管理器错误

您所在的位置:网站首页 windows启动错误怎么修复 排查 Windows 启动管理器错误

排查 Windows 启动管理器错误

#排查 Windows 启动管理器错误| 来源: 网络整理| 查看: 265

排查 Windows 启动管理器错误 - 0xC0000225“找不到状态” 项目 07/17/2023

本文提供了解决 Azure VM 中出现错误代码0xC0000225问题的步骤。 此错误指出找不到状态或对象。

症状

使用启动诊断查看 VM 的屏幕截图时,会看到屏幕截图显示 Windows 无法启动错误,并显示状态代码0xc0000225。

与此错误代码关联的文件将告知你要采取哪些步骤来解决此问题。 找到 “文件:” 部分的文本以确定适当的操作过程。

驱动程序、OS 相关或第三方

如果文件存在,但引用) 所示的驱动程序 (,或者与 OS 相关或第三方,请按照 修复系统文件部分下的步骤进行操作。

在下图中,Windows 启动管理器指出“Windows 无法启动。 最近的硬件或软件更改可能是原因。该图像还显示“状态”为“0xc0000225”、 “文件” 和 \windows\System32\drivers\atapi.sys“ 信息”: “无法加载操作系统,因为缺少关键系统驱动程序或包含错误”。

无文件

如果显示状态代码,但未显示任何文件,请按照 添加 OSDEVICE 变量部分下的步骤进行操作。

在下图中,Windows 启动管理器指出“Windows 无法启动。 最近的硬件或软件更改可能是原因。该图像还显示“状态”为“0xc0000225”, 并将“信息” 显示为“启动选择失败,因为无法访问所需的设备”。

注册表文件

如果它引用任何注册表文件(如 \windows\system32\config\system),请按照 创建支持票证部分下的步骤操作。

在下图中,Windows 启动管理器指出“Windows 无法启动。 最近的硬件或软件更改可能是原因。该图像还显示“状态”为“0xc0000225”,将“文件”显示为 \windows\System32\config\system,并将 “信息 ”显示为“无法加载操作系统,因为系统注册表文件缺失或包含错误”。

在下图中,恢复屏幕指出“你的电脑/设备需要修复。 无法加载操作系统,因为系统注册表文件缺失或包含错误。”该图像还显示错误代码为“0xc0000225”,文件显示为 \windows\System32\config\system。

原因 缺少二进制文件

系统 (.sys) 文件上可能会遇到缺少或损坏的二进制文件。

BCD 损坏或不正确的 VHD 迁移

在这种情况下, 启动配置数据 (BCD) 损坏,或者 虚拟硬盘驱动器 (VHD) 已从本地迁移,但未正确准备。 结果是 OSDEVICE 变量缺失,需要添加。

注册表 Hive 损坏

注册表配置单元损坏的原因可能是:

Hive 失败 Hive 装载,但为空 Hive 未正确关闭 解决方案 进程概述

提示

如果最近备份了 VM,可以尝试 从备份还原 VM 以修复启动问题。

创建并访问修复 VM。 选择解决方案: 修复系统文件 添加 OSDevice 变量 创建支持票证 启用串行控制台和内存转储收集。 重新生成 VM。 创建和访问修复 VM 使用 VM 修复命令 的步骤 1-3 准备修复 VM。 使用远程桌面连接连接到修复 VM。 选择解决方案 打开提升的命令提示符。 根据之前确定的症状,按照相应解决方案中的步骤操作。 可以跳过其他解决方案中的步骤,因为它们不适用于你的问题: 修复系统文件 添加 OSDevice 变量 创建支持票证 修复系统文件

使用附加的 VHD,导航到虚拟机 (VM 中显示的二进制文件位置) 屏幕截图。

右键单击文件,选择 “属性”,然后选择“ 详细信息 ”选项卡以查看有关该文件的信息。

请注意文件的版本,如下图所示:

将文件重命名为 < BINARY.SYS >.old,并将 < BINARY.SYS > 替换为文件名。

对于上一步中的图像,文件 cng.sys 将重命名为 cng.sys.old

注意

如果尝试重命名文件并收到消息“文件已损坏且不可读”, 请联系支持人员寻求帮助,因为此解决方案不起作用。

现在已重命名损坏的文件,请通过从其内部存储库还原文件来修复该文件。

启动 CMD 会话。

导航到 \windows\winsxs。

使用以下命令搜索位于本节开头的二进制文件:

dir /s

此命令将列出计算机具有的所有文件版本,并提供该组件的路径历史记录。

例如, dir cng.sys 将重命名为 dir cng.sys /s

选择列表上文件的最新版本 (或任何你喜欢) 并使用上一个路径和以下命令将该文件复制到 windows\system32 文件夹:

copy :\Windows\WinSxS\\ :\Windows\System32\Drivers\

注意

如果最新的二进制文件不起作用,请尝试在该二进制文件之前的版本,或者你知道有稳定文件的任何版本,例如修补程序之前的某个版本。

例如,如果要查找的二进制文件是 cmimcext.sys,故障驱动器是 驱动器 F:,并且你刚刚运行了对最新版本的搜索,你将看到下图,其中命令提示符 dir cmim* /s 中的查询查找 cmimcext.sys 文件的最新版本。

在上面的示例图像中,查询是在 C:上执行的,而驱动器号应是故障驱动器 F:的驱动器号,后者是作为修复 VM 上作为数据磁盘附加的 OS 磁盘。

复制文件的结果命令为: copy F:\Windows\WinSxS\amd64_xxxxxx\cmimcext.sys F:\Windows\System32\Drivers。

完成此任务后,继续 启用串行控制台和内存转储收集。

添加 OSDEVICE 变量

收集当前启动设置信息,并记下活动分区上的标识符。 然后,你将使用此信息按照生成 VM 的说明添加 OSDEVICE 变量。

如果此信息集合在没有 \boot\bcd 文件时出现错误,请改用 修复系统文件中 的说明。

对于第 1 代 VM,以管理员身份打开提升的命令提示符并输入以下命令:

bcdedit /store :\boot\bcd /enum

此图显示了第 1 代 VM 中的 Windows 启动加载程序,其中突出显示了标识符属性。 突出显示的标识符属性显示唯一的字母数字字符串。

记下 Windows 启动加载程序(其路径为 \windows\system32\winload.exe)的 标识符。

对于第 2 代 VM,请验证 OS 磁盘是否处于联机状态,以及是否已分配其分区驱动器号。 验证后,收集启动设置信息。

在 Windows 搜索中,键入“磁盘管理”并打开磁盘管理控制台。 使用此控制台可标识修复 VM 上附加的磁盘编号,以及保存 BCD 存储的 EFI) 分区 (可扩展固件接口。

在下图中,磁盘 2 是附加到修复 VM 的磁盘编号。 该图还显示了磁盘 2 上的 EFI 系统分区,大小为 100MB,没有分配的字母。

以管理员身份打开提升的命令提示符,并输入以下命令:

使用命令 diskpart打开 DISKPART TOOL。

列出所有磁盘,然后选择在上一步中标识的附加磁盘:

list disk sel disk

下图显示了列出和选择磁盘的结果。 列出了磁盘 0 (127 GB/联机) 、磁盘 1 (32 GB/联机) 和磁盘 2 (127 GB/联机) ,并使用 命令 sel disk 2选择磁盘 2。

列出分区,并选择在上一步中标识的 EFI 系统分区:

list partition sel partition

下图显示了列出和选择分区的结果。 已列出分区 1 (保留 /16MB) 、分区 2 (系统/100MB) 和分区 3 (主/126 GB) ,使用 命令 sel part 2选择分区 2。

使用 命令 assign将字母分配给 EFI 分区。

在下图中,assign命令和新驱动器 SYSTEM (F:) 在 文件资源管理器 中都可以看到。

使用以下命令列出 BCD 存储数据:

bcdedit /store :EFI\Microsoft\boot\bcd /enum

在下图中,Windows 启动加载程序位于第 2 代 VM 中,其中突出显示了标识符属性。 突出显示的标识符属性的值为 {default}。

请注意 Windows 启动加载程序的标识符,其路径为 \windows\system32\winload.efi。

请注意,活动分区上的 OSDEVICE 变量缺失:

在此映像中,命令提示符中列出了 Windows 启动管理器和 Windows 启动加载程序的属性,但缺少 OSDEVICE 属性。

根据以下信息添加 OSDEVICE 变量:

对于单分区 OS 磁盘,请添加 BOOT。

注意

可启动的文件夹将与 windows 文件夹 \windows 文件夹位于同一分区中。

第 1 代 VM 的可启动文件夹 是 (\boot\bcd 文件夹) 。 第 2 代 VM 的可启动文件夹是 EFI\Microsoft\boot\bcd。

对于第 1 代 VM,请输入以下命令:

bcdedit /store :\boot\bcd /set {} OSDEVICE BOOT

对于第 2 代 VM,请输入以下命令:

bcdedit /store :EFI\Microsoft\boot\bcd /set {} OSDEVICE BOOT

对于多个分区 OS 磁盘,请添加 PARTITION=:。

注意

可启动的文件夹很可能位于与 windows 文件夹 \windows 文件夹不同的分区上。

第 1 代 VM 的可启动文件夹 是 (\boot\bcd 文件夹) 。 第 2 代 VM 的可启动文件夹是 EFI\Microsoft\boot\bcd。

对于第 1 代 VM,请输入以下命令:

bcdedit /store :\boot\bcd /set {} OSDEVICE partition=:

对于第 2 代 VM,请输入以下命令:

bcdedit /store :EFI\Microsoft\boot\bcd /set {< IDENTIFIER>} OSDEVICE partition=:

完成此任务后,继续 启用串行控制台和内存转储收集。

联系支持人员

注册表文件错误有一个解决方案,但你需要创建支持票证以获取进一步的帮助。

启用串行控制台和内存转储收集

建议:在重新生成 VM 之前,通过运行以下脚本启用串行控制台和内存转储收集:

以管理员身份打开提升的命令提示符会话。

运行以下命令:

启用串行控制台:

bcdedit /store :\boot\bcd /ems {} ON bcdedit /store :\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200

验证 OS 磁盘上的可用空间是否大于 VM 上的内存大小 (RAM) 。

如果 OS 磁盘上没有足够的空间,请更改将创建内存转储文件的位置,并将该位置引用到附加到 VM 且具有足够可用空间的任何数据磁盘。 若要更改位置,请在以下命令中将 %SystemRoot% 替换为数据磁盘的驱动器号,例如 F:。

启用 OS 转储的建议配置:

从损坏的 OS 磁盘加载注册表配置单元:

REG LOAD HKLM\BROKENSYSTEM :\windows\system32\config\SYSTEM

在 ControlSet001 上启用:

REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f

在 ControlSet002 上启用:

REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f

卸载损坏的 OS 磁盘:

REG UNLOAD HKLM\BROKENSYSTEM 重新生成 VM

使用 VM 修复命令的步骤 5 重新生成 VM。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 还可以将产品反馈提交到 Azure 反馈社区。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3