远程登录Windows实例出现黑屏, 无法进入桌面怎么办?

本文介绍远程登录Windows实例时,出现黑屏,无法进入桌面的解决办法。

问题现象

远程登录Windows实例时会一直处于黑屏状态,无法进入桌面,黑屏状态如下。

远程登录后黑屏

或通过RDP登录实例,能够成功进入会话页面,但是黑屏几秒后出现报错,或者主动断开。

image

问题原因

若一直处于黑屏状态可能为C:\Windows目录下的explorer.exe丢失。

成功进入会话页面,但是黑屏几秒后出现报错,或者主动断开,则说明网络配置,RDP服务配置,证书配置等静态配置均没有问题。而是在创建RDP会话时遇到了错误,可能原因有:

  • 系统内存不足。

  • Users用户组没有系统盘读权限。

  • 创建会话依赖的库损坏,或显卡驱动加载失败。

  • 使用Applocker策略限制了RDP会话依赖的库或者程序的执行。

  • 使用了第三方RDP组件:

    使用qwinsta命令查询,可以看到除了默认的rdp-tcp外还有test监听会话。

解决方案

重要
  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。建议您提前创建快照,快照相关信息,请参见快照概述
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改相关安全信息。

对于前面提到的问题原因,对应的解决方案如下:

explorer.exe文件丢失

重新在Windows操作系统的C:\Windows目录中添加explorer.exe文件后,再远程登录Windows实例,操作步骤如下:

改方案也适用于bfsvc.exeregedit.exewrite.exe文件丢失。
  1. 通过VNC连接实例

  2. 打开Windows操作系统的任务管理器。在页面左上角,选择发送远程命令 > CTRL+ALT+DELETE,并单击任务管理器

    以下操作步骤以Windows Server 2012为例,实际操作系统以您实际的Windows实例为准。

    使用VNC登录进入任务管理器

  3. 打开Windows操作系统的命令窗口。在任务管理器左上角,选择文件(F) > 运行新任务(N)新建任务对话框,输入cmd,单击确定

    打开cmd命令提示框

  4. 在命令行窗口中,使用copy命令,将其他目录下的explorer.exe文件复制到C:\Windows目录下。

    1. 执行dir c:\explorer.exe /s /b命令,获取explorer.exe文件所在目录。

      命令执行结果,示例如下:查看文件目录

    2. 执行copy explorer.exe文件所在目录命令,添加explorer.exe文件。

      以执行copy c:\Windows\WinSxS\amd64_microsoft-windows-explorer_31bf3856ad364e35_10.0.14393.4169_none_c776bd83d44befd2\explorer.exe c:\Windows\命令为例,结果如下:使用cmd复制文件

  5. 打开explorer.exe文件。在任务管理器左上角,选择文件(F) > 运行新任务(N)新建任务对话框,输入explorer.exe单击确定

    操作系统自动打开这台电脑页面,表示explorer.exe文件已成功添加到C:\Windows目录中。运行explorer.exe

  6. 重新远程登录ECS实例。

    如果问题仍未解决,则表示Windows系统中的explorer.exe文件已全部损坏无法使用。此时,建议在ECS控制台使用快照备份数据后,重新初始化系统盘(重置操作系统)

系统内存不足

在业务允许的情况下,尝试暂时关闭内存占用过高的进程。或者尝试实例升配。

系统盘权限异常

参考通过远程桌面连接Windows Server 2022系统的ECS实例,提示“你的远程桌面服务会话已结束,可能是下列原因之一”错误怎么办?Users用户组分配系统盘读权限。

系统文件损坏

  1. 尝试使用sfc工具进行修复,参考微软官方文档

  2. 使用ISO镜像,在保留用户数据的情况下重装系统。

  3. 使用系统盘快照恢复或者替换系统盘。

Applocker策略限制

  1. 在线解决

    1. 通过会话管理远程连接实例。

    2. 重命名 C:\Windows\System32\GroupPolicy目录和C:\Windows\System32\GroupPolicyUsers目录。

    3. 执行 gpupdate /force 刷新组策略。

    4. 如果问题依旧,尝试重启实例。

  2. 离线解决

    1. 卸载实例系统盘,并将系统盘挂载到正常的实例中。

    2. 在正常实例中,打开磁盘管理器,将挂载的系统盘设置为联机状态。

    3. 重命名 \Windows\System32\GroupPolicy目录和\Windows\System32\GroupPolicyUsers目录。

    4. 卸载挂载的系统盘并挂载到原来的实例中。

三方RDP组件

通过修改注册表配置,暂时屏蔽三方RDP组件,使用系统默认的组件。

操作前请做好注册表备份,具体操作步骤如下:

  1. 打开注册表编辑器,并定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations注册表。

  2. 找到三方RDP组件对应的注册表,修改fEnableWinStation的值为0。image

  3. 找到系统默认RDP组件对应的注册白表,确保fEnableWinStation值为1。

    image