方案指南:登录到系统后出现黑屏

本方案指南介绍如何排查和收集登录系统后出现黑屏的问题。

注意

本文不涉及以下问题:

  • 在系统提示输入凭据之前,启动后会显示一个黑屏。
  • 经过几分钟的黑屏,你已成功登录到系统。

系统会提示输入凭据登录到系统。 输入凭据后,系统无法加载用户配置文件和桌面,并显示黑屏(可能带有可见的鼠标光标)。

重置图形驱动程序

按 Windows 徽标键+Ctrl+Shift+B 重置图形驱动程序。 如果不起作用,请继续执行后续步骤。

检查 Shell 配置

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 出于防范目的,请在修改之前备份注册表,以便在出现问题时还原注册表。 有关如何备份和还原注册表的详细信息,请参阅:如何备份和还原 Windows 中的注册表

  1. 按 Windows 徽标键+R,键入 regedit,然后按 Enter 打开注册表编辑器。

  2. 导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinlogonShell 窗格中的值数据,并确保值数据设置为 explorer.exe

    注意

    如果值数据不是 explorer.exe请备份注册表,然后将值数据 explorer.exe更改为 。

  3. 右键单击注册表项并选择“权限,检查注册表项的权限。 请确保权限与正常运行的设备上的权限相同。

如果问题仍然存在, 请在 Windows 中执行干净启动,以确定哪个启动应用程序或服务导致该问题。

捕获explorer.exe和userinit.exe的进程转储

如果清理启动不允许找到问题的原因,请继续执行以下步骤,使用 ProcDump 或 Windows 错误报告 (WER),根据需要捕获数据。

使用以下步骤检查是否可以访问任务管理器:

  1. Ctrl+Alt+Del 输入安全选项屏幕。

    注意

    如果使用的是远程桌面会话,请使用 Ctrl+Alt+End。

  2. 从显示的选项中选择 任务管理器。 如果鼠标不起作用,可能需要使用箭头和 Enter 键。

  3. 启动任务管理器后,导航到“ 详细信息 ”选项卡以查看所有正在运行的进程及其详细信息。

  4. 在列表中查找 explorer.exeuserinit.exe

如果 explorer.exeuserinit.exe 正在运行,请使用以下步骤收集进程转储:

  1. 下载 ProcDump 并将 ProcDump 文件提取到已知目录,例如 C:\Tools\

  2. 导航到在提升的命令提示符中提取 ProcDump 的目录。

  3. 运行以下命令:

    procdump -ma explorer.exe explorer.dmp
    procdump -ma userinit.exe userinit.dmp
    
  4. 继续分析转储文件或联系Microsoft 支持部门以分析和诊断问题的原因。

如果 explorer.exeuserinit.exe 未运行,可能有多种原因,例如:

  • 进程停止响应。
  • 进程退出。
  • 资源管理器不是默认 shell。

检查进程是否停止响应

  1. 按 Windows 徽标键+R,键入 eventvwr.msc,然后按 Enter 打开事件查看器。

  2. 展开“Windows 日志”部分并选择应用程序日志。

  3. 专门搜索“事件 ID 1000”,指示应用程序停止响应。 检查事件是否与 explorer.exeuserinit.exe 相关,并匹配问题的时间范围。 如果是,请继续执行下一步。 否则,请继续执行 “验证”(如果explorer.exe或userinit.exe已退出 分区)。

  4. 若要使用注册表编辑器启用 WER,请执行以下步骤:

    重要

    此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 出于防范目的,请在修改之前备份注册表,以便在出现问题时还原注册表。 有关如何备份和还原注册表的详细信息,请参阅:如何备份和还原 Windows 中的注册表

    1. 创建新文件夹(例如 C:\dumps),或使用所选的任何文件夹。

    2. 按 Windows 徽标键+R 打开 “运行 ”对话框。

    3. 键入 regedit ,然后按 Enter 打开注册表编辑器。

    4. 导航到以下键:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting

      注意

      Windows Error Reporting如果该密钥不存在,请右键单击Microsoft该键,选择“新建>密钥”,然后将其命名为 Windows Error Reporting“ 。

    5. 在密钥中 Windows Error Reporting ,创建以下注册表值:

      值名称 值类型 “数值数据”
      DumpCount REG_DWORD 10
      DumpType REG_DWORD 2
      DumpFolder REG_EXPAND_SZ C:\dumps
  5. 重新启动系统或再次登录以重现问题。 explorer.exeuserinit.exe停止响应后,应在选择在上一步中保存转储的路径中生成进程转储。

验证explorer.exe或userinit.exe是否已退出

下载 进程监视器(ProcMon) 并将 ProcMon 文件提取到已知目录,例如 C:\Sysinternals\

对于一次只允许一个用户会话的设备,请使用进程监视器收集启动日志。

  1. 运行 ProcMon,然后从菜单中选择“>选项启用启动日志记录”。 此操作将 ProcMon 配置为在启动时开始日志记录。
  2. 重新启动系统。 ProcMon 将自动开始记录启动过程。
  3. 系统启动后,启动 ProcMon 以停止启动日志记录并保存收集的数据。 启动 ProcMon 后,系统会提示你保存该文件。 在这种情况下,请选择“ ”。 然后,转到“文件>保存”,然后选择“所有事件>都确定以保存该文件。

对于具有多个会话的设备,可以使用常规 ProcMon。

若要为一个用户已登录的场景设置 ProcMon,另一个用户尝试登录以重现问题,请执行以下步骤:

  1. 让第一个用户登录到系统,并使用命令提示符启动 ProcMon。 导航到提取 ProcMon 的路径,并将其作为管理员运行。
  2. 最小化 ProcMon 并将其保留在后台运行。 确保第一个用户未注销,因为这可能会中断监视过程。
  3. 让第二个用户登录到系统以重现黑屏问题。
  4. 重现问题后,第一个用户应返回 ProcMon,并使用捕获图标停止捕获。
  5. 在 ProcMon 中,转到“文件>保存”,然后选择“所有事件>都确定以保存捕获的日志文件。

捕获后,分析explorer.exe的任何实例的日志,并使用非零进程退出代码userinit.exe退出。 如果是这种情况,请使用以下步骤捕获进程转储:

  1. 下载 ProcDump 并将 ProcDump 文件提取到已知目录,例如 C:\Tools\

  2. 按 Windows 徽标键+R 并键入 cmd 以打开提升的命令提示符。

  3. 导航到在命令提示符中使用命令提取 cd ProcDump 的目录,然后输入以下命令,将 ProcDump 配置为在explorer.exe退出并出现错误时捕获转储:

    Procdump -e 1 -x C:\Temp explorer.exe
    
  4. 让第二个用户登录到系统以重现黑屏问题。

  5. 重现问题后,在 C:\Temp 目录中监视转储文件创建

  6. 继续分析转储文件或联系Microsoft 支持部门以分析和诊断问题的原因。