我一直有一个问题重启Windows 10 上的 Windows 远程桌面服务 - 特别是,当远程桌面服务尝试停止时,重启过程会挂起。
更具体地说:启动后,我可以打开services.msc
,然后右键单击那里的“远程桌面服务”,然后单击“重新启动” - 它(以及“远程桌面服务用户模式端口重定向器”)重新启动(意味着它停止,然后重新启动)。
然后,我与 Windows 10 计算机建立远程桌面会话,几个小时内一切都正常运行,然后无论出于何种原因,服务器都会断开我与会话的连接 - 并且之后无法通过远程桌面登录到 Windows 10 计算机。
在 Windows 10 计算机断开与我的 RDP 会话的连接后,我返回该计算机,尝试再次通过重新启动services.msc
,然后右键单击那里的“远程桌面服务”,然后单击“重新启动” - 但是这次它挂在“停止”部分,最终(大约一分钟后)失败,并显示:
服务
Windows 无法在本地计算机上启动远程桌面服务。
错误 1053:该服务未及时响应启动或控制请求。
然后,无法重试“远程桌面服务”的“重新启动”,因为它显示为灰色,并且服务仍然停留在“停止”状态。
此时我该怎么做才能恢复“远程桌面服务”?
答案1
远程桌面会话崩溃后,Windows 10 RDP“主机”计算机在管理员命令提示符中显示以下内容:
C:\WINDOWS\system32>qwinsta
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
>console user 1 Active
31c5fffffffff... 65536 Listen
7a78fffffffff... 65537 Listen
rdp-tcp 65538 Listen
我尝试过rwinsta
重新启动这些,但没有效果:
C:\WINDOWS\system32>rwinsta 65536
If you reset this session, all users using this protocol will be logged off,
continue (n=no)? y
Could not reset session ID 65536, Error code 2
Error [2]:The system cannot find the file specified.
C:\WINDOWS\system32>rwinsta 65537
If you reset this session, all users using this protocol will be logged off,
continue (n=no)? y
Could not reset session ID 65537, Error code 2
Error [2]:The system cannot find the file specified.
C:\WINDOWS\system32>rwinsta 65538
If you reset this session, all users using this protocol will be logged off,
continue (n=no)? y
C:\WINDOWS\system32>qwinsta
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
>console user 1 Active
65536 Down
65537 Down
rdp-tcp 65538 Listen
然后,尝试右键单击/“重新启动”远程桌面服务后,当停止过程卡住时,状态如下:
C:\WINDOWS\system32>qwinsta
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
>console user 1 Active
我还没有真正证实这一点,但我认为如果该rdp-tcp
部件消失,那么您就无法建立远程桌面连接。
在管理员 PowerShell 中,这是可见的(通过以下方式找到https://green.cloud/docs/how-to-restart-remote-desktop-services-without-restarting-windows-server/):
PS C:\WINDOWS\system32> Restart-Service -Force -Name "TermService"
Restart-Service : Service 'Remote Desktop Services (TermService)' cannot be stopped due to the following error: Cannot
stop TermService service on computer '.'.
At line:1 char:1
+ Restart-Service -Force -Name "TermService"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (System.ServiceProcess.ServiceController:ServiceController) [Restart-Service
], ServiceCommandException
+ FullyQualifiedErrorId : CouldNotStopService,Microsoft.PowerShell.Commands.RestartServiceCommand
在这里我使用了我在以下文章中找到的方法:
- https://woshub.com/killing-windows-services-that-hang-on-stopping/
- https://www.action1.com/how-to-remote-control-of-services-via-sc-psservice-mmc/
返回管理员命令提示符:
C:\WINDOWS\system32>sc query TermService
SERVICE_NAME: TermService
TYPE : 30 WIN32
STATE : 3 STOP_PENDING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x1
WAIT_HINT : 0xea60
注意sc query
没有给出 PID,所以使用sc queryex
:
C:\WINDOWS\system32>sc queryex TermService
SERVICE_NAME: TermService
TYPE : 30 WIN32
STATE : 3 STOP_PENDING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x1
WAIT_HINT : 0xea60
PID : 17372
FLAGS :
明白了——PID 是 17372——因此只需终止这个任务即可:
C:\WINDOWS\system32>taskkill /PID 17372 /F
SUCCESS: The process with PID 17372 has been terminated.
...并再次检查服务状态:
C:\WINDOWS\system32>sc queryex TermService
SERVICE_NAME: TermService
TYPE : 30 WIN32
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 11340
FLAGS :
C:\WINDOWS\system32>qwinsta
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
>console user 1 Active
31c5fffffffff... 65536 Listen
7a78fffffffff... 65537 Listen
rdp-tcp 65538 Listen
确实,现在又有一个正在运行的服务,并且有一个新的 PID。
此时,我也可以右键单击/“重新启动”远程桌面服务services.msc
- 然后它就可以再次正常工作。