有关 Windows 启动问题的高级疑难解答

备注

本文供支持专员和 IT 专业人员使用。 如果你正在寻找有关恢复选项的更多常规信息,请参阅 Windows 10 中的恢复选项

摘要

有很多原因会导致基于 Windows 的计算机在启动时出现问题。 若要解决启动问题,请首先确定计算机遇到问题时所处的阶段:

阶段 启动过程 BIOS UEFI
1 PreBoot MBR/PBR(启动代码) UEFI 固件
2 Windows 引导管理器 %SystemDrive%\bootmgr \EFI\Microsoft\Boot\bootmgfw.efi
3 Windows OS 加载程序 %SystemRoot%\system32\winload.exe %SystemRoot%\system32\winload.efi
4 Windows NT 操作系统内核 %SystemRoot%\system32\ntoskrnl.exe

1. 预启动

电脑的固件启动开机自检 (POST) 并加载固件设置。 此预启动过程在检测到有效的系统磁盘时结束。 固件读取主启动记录 (MBR),然后启动 Windows 启动管理器。

2. Windows 引导管理器

Windows 引导管理器在 Windows 加载分区上查找并启动 Windows 加载器 (Winload.exe)。

3. Windows 操作系统加载程序

启动 Windows 内核所需的基本驱动程序已加载,并且内核开始运行。

4. Windows NT 操作系统内核

内核将系统注册表配置单元和标记为 BOOT_START 的其他驱动程序加载到内存中。

内核将控制权传递给会话管理器进程 (Smss.exe),该进程将初始化系统会话,并加载和启动未标记为 BOOT_START 的设备和驱动程序。

以下是启动序列的摘要、将在显示器上看到哪些内容以及序列中该时间点的典型启动问题。 在开始疑难解答之前,必须了解启动过程的大纲和显示状态,以确保在服务活动开始时正确标识问题。

启动序列流程图的缩略图。
单击以放大

每个阶段都有不同的疑难解答方法。 本文提供针对前三个阶段中发生的问题的疑难解答技术。

备注

如果计算机反复启动到恢复选项,请在命令提示符中运行以下命令以中断循环:

Bcdedit /set {default} recoveryenabled no

如果 F8 选项不起作用,请运行以下命令:

Bcdedit /set {default} bootmenupolicy legacy

BIOS 阶段

若要确定系统是否已通过 BIOS 阶段,请按照以下步骤操作:

  1. 如果有任何外部外围设备连接到计算机,请将其断开。

  2. 检查物理计算机上的硬盘驱动器指示灯是否正常工作。 如果未正常工作,则表明启动过程卡在 BIOS 阶段。

  3. 按 NumLock 键以查看指示灯是否打开和关闭。 如果没有,则表明启动过程卡在 BIOS 阶段。

    如果系统卡在 BIOS 阶段,则可能是硬件问题。

启动加载程序阶段

如果除光标闪烁外完全黑屏,或者如果收到以下错误代码之一,则表明启动过程卡在启动加载程序阶段:

  • 引导配置数据 (BCD) 缺失或损坏
  • 启动文件或 MBR 损坏
  • 操作系统缺失
  • 引导扇区缺失或损坏
  • Bootmgr 缺失或损坏
  • 由于系统配置单元缺失或损坏而无法启动

若要解决此问题,请使用 Windows 安装媒体启动计算机,按 Shift+F10 命令获取提示符,然后使用以下任一方法。

方法 1:启动修复工具

启动修复工具可自动修复许多常见问题。 该工具还允许你快速诊断和修复更复杂的启动问题。 计算机检测到启动问题时,将启动启动修复工具。 该工具启动时将执行诊断。 这些诊断包括分析启动日志文件以确定问题的原因。 启动修复工具确定原因后,会尝试自动修复该问题。

为此,请按照以下步骤操作。

备注

有关启动 WinRE 的其他方法,请参阅 Windows 恢复环境 (Windows RE)

  1. 将系统启动到已安装 Windows 版本的安装媒体。 有关详细信息,请参阅为 Windows 创建安装媒体

  2. 在“安装 Windows”屏幕上,选择“下一步” > “修复计算机”。

  3. 在“选择选项”屏幕上,选择“疑难解答”。

  4. 在“高级选项”屏幕上,选择“启动修复”。

  5. 启动修复后,选择“关机”,然后打开电脑查看 Windows 能否正常启动。

启动修复工具会生成一个日志文件,帮助你了解启动问题和已进行的修复。 可以在以下位置找到该日志文件:

%windir%\System32\LogFiles\Srt\Srttrail.txt

有关详细信息,请参阅尝试启动 Windows Vista 或 Windows 7 时发生停止错误,或计算机停止响应

方法 2:修复启动代码

若要修复启动代码,请运行以下命令:

BOOTREC /FIXMBR

若要修复引导扇区,请运行以下命令:

BOOTREC /FIXBOOT

备注

BOOTRECFixmbr 一起运行将仅覆盖主启动代码。 如果 MBR 中的损坏影响了分区表,则运行 Fixmbr 可能无法解决此问题。

方法 3:修复 BCD 错误

如果你收到与 BCD 相关的错误,请按照以下步骤操作:

  1. 扫描已安装的所有系统。 若要执行此操作,请运行以下命令:

    Bootrec /ScanOS
    
  2. 重新启动计算机以检查该问题是否已解决。

  3. 如果问题未解决,请运行以下命令:

    Bootrec /rebuildbcd
    
  4. 你可能会收到以下输出之一:

    Scanning all disks for Windows installations. Please wait, since this may take a while ...
    Successfully scanned Windows installations. Total identified Windows installations: 0
    The operation completed successfully.
    
    Scanning all disks for Windows installations. Please wait, since this may take a while ...
    Successfully scanned Windows installations. Total identified Windows installations: 1
    D:\Windows  
    Add installation to boot list? Yes/No/All:
    

    如果输出显示 Windows 安装:0,请运行以下命令:

    bcdedit /export c:\bcdbackup
    
    attrib c:\\boot\\bcd -r –s -h
    
    ren c:\\boot\\bcd bcd.old
    
    bootrec /rebuildbcd
    

    运行命令后,你将收到以下输出:

    Scanning all disks for Windows installations. Please wait, since this may take a while ...
    Successfully scanned Windows installations. Total identified Windows installations: 1
    {D}:\Windows
    Add installation to boot list? Yes/No/All: Y
    
  5. 请尝试重新启动系统。

方法 4:替换 Bootmgr

如果方法 1、2 和 3 均未解决此问题,请将驱动器 C 中的 Bootmgr 文件替换为系统保留分区。 为此,请执行下列步骤:

  1. 在命令提示符中,将目录更改为系统保留分区。

  2. 运行 attrib 命令以取消隐藏文件:

    attrib -r -s -h
    
  3. 在 Windows(系统驱动器)上运行相同的 attrib

    attrib -r -s -h
    
  4. 将 Bootmgr 文件重命名为 Bootmgr.old:

    ren c:\bootmgr bootmgr.old
    
  5. 导航到系统驱动器。

  6. 复制 Bootmgr 文件,然后将其粘贴到系统保留分区。

  7. 重新启动计算机。

方法 5:还原系统配置单元

如果 Windows 无法将系统注册表配置单元加载到内存中,则必须还原系统配置单元。 为此,请使用 Windows 恢复环境或使用紧急修复磁盘 (ERD) 将文件从 C:\Windows\System32\config\RegBack 复制到 C:\Windows\System32\config。

如果问题仍然存在,则可能需要将系统状态备份还原到备用位置,然后检索要替换的注册表配置单元。

备注

从 Windows 10 版本 1803 开始,Windows 不再自动将系统注册表备份到 RegBack 文件夹。此更改是有意为之,旨在帮助减少 Windows 的总磁盘占用空间。 若要恢复注册表配置单元损坏的系统,Microsoft 建议使用系统还原点。 有关详细信息,请查看此文章

内核阶段

如果系统在内核阶段遇到问题,你将遇到多种症状或收到多条错误消息。 包括但不限于以下各项:

若要解决这些问题,请逐一尝试以下恢复启动选项。

方案 1:尝试以安全模式或上次已知良好配置启动计算机

在“高级启动选项”屏幕上,尝试以“安全模式”或“带网络连接的安全模式”启动计算机。 如果上述任一选项有效,请使用事件查看器来帮助识别并诊断启动问题的原因。 若要查看事件日志中记录的事件,请按照以下步骤操作:

  1. 使用以下方法之一打开事件查看器:

    • 单击“开始”,指向“管理工具”,然后单击“事件查看器”。

    • 在 Microsoft 管理控制台中启动事件查看器管理单元。

  2. 在控制台树中,展开事件查看器,然后单击要查看的日志。 例如,单击“系统日志”或“应用程序日志”。

  3. 在细节窗格中,双击要查看的事件。

  4. 在“编辑”菜单上,单击“复制”,在要粘贴事件的程序(例如,Microsoft Word)中打开新文档,然后单击“粘贴”。

  5. 使用向上键或向下键查看上一个或下一个事件的说明。

全新启动

若要解决影响服务的问题,请通过使用系统配置 (msconfig) 执行全新启动。 选择“有选择的启动”,逐一测试服务,以确定导致该问题的服务。 如果找不到原因,请尝试包括系统服务。 但是,在大多数情况下,出现问题的是第三方服务。

禁用你认为出错的任何服务,并尝试通过选择“正常启动”再次启动计算机。

有关详细说明,请参阅如何在 Windows 中执行全新启动

如果计算机以“禁用驱动程序签名”模式启动,请以“禁用驱动程序强制签名”模式启动计算机,然后按照以下文章中介绍的步骤确定需要强制执行驱动程序签名的驱动程序或文件:解决由于驱动程序签名缺失导致的启动问题 (x64)

备注

如果计算机是域控制器,请尝试使用目录服务还原模式 (DSRM)。

如果遇到停止错误“0xC00002E1”或“0xC00002E2”,此方法是一个非常重要的步骤。

示例

警告

如果使用注册表编辑器或使用其他方法错误地修改了注册表,则可能会出现严重问题。 这些问题可能需要重新安装操作系统。 Microsoft 不能保证能够解决这些问题。 修改注册表的风险由你自己承担。

错误代码 INACCESSIBLE_BOOT_DEVICE (STOP 0x7B)

若要解决此停止错误,请按照以下步骤筛选驱动程序:

  1. 通过将系统的 ISO 磁盘放在驱动器转到 Windows 恢复环境 (WinRE)。 ISO 的版本应与 Windows 相同或更高。

  2. 打开注册表。

  3. 加载系统配置单元,然后将其命名为“test”。

  4. 在以下注册表子项下,检查是否有非 Microsoft 驱动程序的低层筛选条件项和高层筛选条件项:

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class

  5. 对于找到的每个第三方驱动程序,单击高层或低层筛选条件,然后删除值数据。

  6. 在整个注册表中搜索类似项。 进行适当地处理,然后卸载注册表配置单元。

  7. 以正常模式重新启动服务器。

有关其他疑难解答步骤,请参阅以下文章:

若要解决在安装 Windows 更新后发生的问题,请通过以下步骤检查是否有挂起的更新:

  1. 在 WinRE 中打开命令提示符窗口。

  2. 运行以下命令:

    DISM /image:C:\ /get-packages
    
  3. 如果存在任何挂起的更新,请运行以下命令将其卸载:

    DISM /image:C:\ /remove-package /packagename: name of the package
    
    DISM /Image:C:\ /Cleanup-Image /RevertPendingActions
    

    尝试启动计算机。

如果计算机未启动,请按照以下步骤操作:

  1. 在 WinRE 中打开命令提示符窗口,然后启动文本编辑器,如记事本。

  2. 导航到系统驱动器,然后搜索 windows\winsxs\pending.xml。

  3. 如果找到 Pending.xml 文件,请将该文件重命名为 Pending.xml.old。

  4. 打开注册表,然后在 HKEY_LOCAL_MACHINE 中加载组件配置单元作为测试。

  5. 突出显示已加载的测试配置单元,然后搜索 pendingxmlidentifier 值。

  6. 如果存在 pendingxmlidentifier 值,请将其删除。

  7. 卸载测试配置单元。

  8. 加载系统配置单元,然后将其命名为“test”。

  9. 导航到以下子项:

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\TrustedInstaller

  10. 起始值从 1 更改为 4

  11. 卸载配置单元。

  12. 尝试启动计算机。

如果在启动过程后期发生停止错误,或者仍在生成停止错误,则可以捕获内存转储。 良好的内存转储有助于确定停止错误的根本原因。 有关详细信息,请参阅以下文章:

有关 Windows 10 或 Windows Server 2016 中的页面文件问题的详细信息,请参阅以下内容:

有关停止错误的详细信息,请参阅以下知识库文章:

如果转储文件显示与驱动程序相关的错误(例如,windows\system32\drivers\stcvsm.sys 缺失或损坏),请遵循以下指南:

  • 检查驱动程序提供的功能。 如果驱动程序是第三方启动驱动程序,请确保你了解其功能。

  • 如果驱动程序不重要且没有依赖项,请加载系统配置单元,然后禁用驱动程序。

  • 如果停止错误指示系统文件损坏,请在脱机模式下运行系统文件检查器。

    • 为此,请打开 WinRE,打开命令提示符,然后运行以下命令:

      SFC /Scannow /OffBootDir=C:\ /OffWinDir=E:\Windows
      

      有关详细信息,请参阅使用系统文件检查器 (SFC) 解决问题

    • 如果磁盘损坏,请运行检查磁盘命令:

      chkdsk /f /r
      
    • 如果停止错误指示常规注册表损坏,或者你认为安装了新的驱动程序或服务,请按照以下步骤操作:

      1. 启动 WinRE,然后打开命令提示符窗口。
      2. 启动文本编辑器,如记事本。
      3. 导航到 C:\Windows\System32\Config\。
      4. 通过向名称附加“.old”来重命名这五个配置单元。
      5. 从 Regback 文件夹复制所有配置单元,将它们粘贴到 Config 文件夹中,然后尝试以正常模式启动计算机。

备注

从 Windows 10 版本 1803 开始,Windows 不再自动将系统注册表备份到 RegBack 文件夹。此更改是有意为之,旨在帮助减少 Windows 的总磁盘占用空间。 若要恢复注册表配置单元损坏的系统,Microsoft 建议使用系统还原点。 有关详细信息,请查看此文章