如何排查 Windows XP 或 Windows Server 2003 中的 STOP 0xC000021A 错误

本文介绍 STOP 0xC000021A 错误的高级故障排除步骤。

家庭用户:本文适用于支持代理和 IT 专业人员。 如果要获得有关在使用计算机时蓝屏错误代码的详细信息,请参阅故障排除蓝屏错误

适用于:Windows 10 - 所有版本,Windows Server 2012 R2
原始 KB 编号: 156669

本文适用于高级计算机用户。 如果你对高级故障排除不了解,可以寻求他人的帮助或与支持部门联系。

使用运行“适用于”部分中列出的操作系统之一的服务器或工作站时,可能会收到以下错误消息:

STOP: c000021a {Fatal System Error}
Windows 登录进程系统进程意外终止,状态为 0xc0000034 (0x00000000 0x0000000)
系统已关闭。

注意

括号中的参数特定于计算机配置,每种情况可能有所不同。

原因

当 Winlogon.exe 或 Csrss.exe 失败时,将出现 STOP 0xC000021A 错误。 当 Windows NT 内核检测到其中任一进程已停止时,它会停止系统并引发 STOP 0xC000021A 错误。 此错误可能有多种原因,包括:

  • 已安装不匹配的系统文件。
  • Service pack 安装失败。
  • 用于还原硬盘的备份程序未正确还原可能正在使用的文件。
  • 已安装不兼容的第三方程序。

解决方案

若要排查此问题,必须确定其中哪一个进程失败以及其原因。

若要确定哪个进程失败,请将 Dr. Watson 注册为默认系统调试器(如果它不是默认调试器的话)。 Dr. Watson for Windows NT 会将有关进程故障的诊断信息记录到日志文件 Drwtsn32.log。 此外,还可以将此程序配置为生成故障进程的内存转储文件。 然后,可以分析调试器中的文件,以确定进程失败的原因。

若要将 Dr. Watson 设置为捕获用户模式程序错误,请执行以下步骤:

  1. 在命令提示符处键入“System Root\System32\Drwtsn32.exe -I”,然后按 Enter 键。

    此命令会将 Dr. Watson 配置为默认系统调试器。

  2. 在命令提示符下,键入“System Root\System32\Drwtsn32.exe”,然后选择以下选项:

    • “附加到现有日志文件”
    • “创建故障转储”
    • “可视化通知”
  3. 计算机从 STOP 0xC000021A 错误重新启动后,运行 Dr. Watson (Drwtsn32.exe)。

  4. 查看 Dr. Watson 日志以确定导致问题的用户模式进程。

  5. 如果 Dr. Watson 日志中未包含足够的信息来确定问题的原因,请分析 User.dmp 文件以确定 STOP 0xC000021A 错误的原因。

    如果 Dr. Watson 未为 Winlogon.exe 或 Csrss.exe 创建 User.dmp 文件,则可能需要使用其他工具生成故障进程的内存转储文件。 有关更多信息,请参阅下面的文章:

    241215 如何使用 Userdump.exe 工具创建转储文件

    注意

    按照知识库文章中的说明对关闭异常的进程进行故障排除。 按照以下说明操作,监视以下进程以排查 STOP 0xC000021A 错误:

    • Winlogon.exe
    • Csrss.exe

    大多数 STOP 0xC000021A 错误的出现是因为 Winlogon.exe 故障。 这通常是由于第三方图形识别和验证 (GINA) DLL 错误而发生的。 GINA 是可替换的 DLL 组件,由 Winlogon.exe 加载。 GINA 实施交互式登录模型的身份验证策略。 GINA 执行所有标识和身份验证用户交互。

某些类型的远程控制软件通常会替换默认的 Windows GINA DLL (Msgina.dll)。 第一步最好是检查系统,看看它是否有第三方 GINA DLL。 为此,请找到以下注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinlogonValue = GinaDLL REG_SZ

  • 如果 Gina DLL 值存在,并且不是 Msgina.dll,则可能意味着第三方产品已更改此值。
  • 如果此值不存在,系统将 Msgina.dll 用作默认的 GINA DLL。 如果在安装新的或更新的设备驱动程序、系统服务或第三方程序后首次出现此错误,则应删除或禁用新软件。 请联系软件制造商,了解更新是否可用。

上次已知的良好配置

如果本文中前面的步骤无法解决问题,请使用最后一次已知的良好配置启动计算机。 要使用最后一次已知的良好配置启动计算机,请执行以下步骤。

注意

由于 Microsoft Windows 存在多个版本,因此你计算机上的以下步骤可能会有所不同。 如果是这样,请参见您的产品文档来完成这些步骤。

  1. 选择“启动”>“关闭”

  2. 选择“重启”>“确定”

  3. 在指定时间按 F8:

    • 对于基于 x86 的计算机:当文本屏幕出现,然后消失时,按 F8。 (文本屏幕可能包括内存测试、有关 BIOS 的行和其他行。)也可能出现提示,指示何时按 F8。
    • 对于基于 Itanium 体系结构的计算机:从启动菜单进行选择后,按 F8。 可能会出现提示,指示何时按 F8。
  4. 使用箭头键选择“上次已知的良好配置”,然后按 Enter。

    NUM LOCK 必须关闭,数字键盘上的箭头键才能起作用。

  5. 使用箭头键突出显示操作系统,然后按 Enter。

注意

  • 选择“上次已知良好配置”启动选项提供一种从问题中恢复的方法,例如新添加的驱动程序可能不适用于硬件。 但是,它无法解决因驱动程序或文件损坏或缺失而导致的问题。
  • 选择“上次已知良好配置”选项时,将仅还原注册表项 HKLM\System\CurrentControlSet 中的信息。 在其他注册表项中所做的任何更改仍保留。

使用恢复控制台删除不兼容的软件

如果本文中前面的步骤无法解决问题,请使用恢复控制台删除不兼容的软件。 描述如何执行此操作的完整步骤超出了本文的范围。 但是,可以使用以下文章作为指南:

816104 如何在 Windows Server 2003 中使用恢复控制台替换驱动程序
326215 如何在不启动的基于 Windows Server 2003 的计算机上使用恢复控制台
307654 如何在 Windows XP 中安装和使用恢复控制台