本文介绍通过远程桌面连接Windows实例,提示“远程桌面由于以下原因之一无法连接到远程计算机:未启用对服务器的远程访问、远程计算机已关闭、远程计算机在网络上不可用”错误的解决方案。
问题描述
使用远程桌面连接Windows实例时,提示“远程桌面由于以下原因之一无法连接到远程计算机:未启用对服务器的远程访问、远程计算机已关闭、远程计算机在网络上不可用”错误,具体报错信息如下图所示。

使用自助问题排查工具
阿里云的自助问题排查工具可以帮助您快速检测安全组配置、实例内部防火墙以及常见应用端口监听状态,并给出明确的诊断报告。
单击进入自助问题排查页面,并切换至目标地域。

如果自助问题排查工具未能定位您的问题,请继续下面的步骤进行手动排查。
手动排查
出现该问题可能有以下原因:
实例网络连接中断。参考步骤四:检查防火墙配置和无法远程连接Windows实例的排查方法修复。
远程连接指定的端口和实例监听的端口不一致。参考为什么使用默认的端口(3389)无法登录Windows实例?修复。
RDP-Tcp会话未处于监听状态。参考解决方案修复。
说明使用
query session或qwinsta命令,查看RDP-Tcp会话的监听状态。正常实例使用qwinsta命令所返回的结果如下图所示,供参考。

解决方案
为解决因RDP-Tcp会话未处于监听状态而导致远程桌面连接失败的问题,您需要将异常实例中的RDP-TCP注册表项替换为来自正常工作实例的相应注册表项。
导出正常实例中的RDP-TCP注册表。
远程连接到一台具有正常远程桌面连接(RDP)功能的Windows实例,确保版本与异常实例相同。
按
Win键 + R打开运行对话框,输入regedit,然后单击确定。在注册表编辑器对话框中,右键单击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp注册表,选择导出。
将文件命名为
rdp-tcp.reg,然后单击保存。
将已保存的
rdp-tcp.reg文件上传至异常实例中。替换异常实例中的RDP-TCP注册表。
右键
,单击运行,输入regedit,然后单击确定。在注册表编辑器对话框中,右键单击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp注册表,右键导出至名为rdp-tcp.bak.reg的文件中。右键单击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp注册表,然后选择删除。在注册表编辑器对话框中,选择,将由正常实例中导出的离线注册表文件
rdp-tcp.reg导入到异常实例的注册表中。
检查Users用户组是否有注册表的读权限。
右键RDP-Tcp,单击权限,检查Users用户是否有读权限。

若没有读权限则参考以下步骤分配权限:
点击高级按钮打开高级配置页面。
单击更改,输入
Administrators后,依次单击检查名称、确认,然后在RDP-Tcp的高级安全设置对话框中,单击应用使修改生效。
点击启用继承按钮(点击后按钮名称变为禁用继承)并勾选按钮下方的选项。最后点击应用,并在后续弹出的兑换框中点击确认。这样会从父对象中继承权限。

执行以下任一命令,重启远程桌面连接服务,以使配置生效。
PowerShell命令
Start-Service TermService -Force命令行
sc start TermService
重新使用远程桌面连接Windows实例,确保可以正常连接。

