windows: 修复极端情况下无法重启 rdp 服务

This commit is contained in:
bin456789 2024-10-14 22:01:32 +08:00
parent 658c73c1a1
commit 275af9eae9
No known key found for this signature in database
GPG Key ID: EE301B386DE6C11B

View File

@ -18,16 +18,6 @@ rem v2.33|Action=Allow|Active=TRUE|Dir=In|Protocol=17|LPort=3389|App=%SystemRoot
rem 设置端口
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d %RdpPort% /f
rem 重启服务
rem 可以用 sc 或者 net
rem UmRdpService 依赖 TermService
rem sc stop 不能处理依赖关系,因此 sc stop TermService 前需要 sc stop UmRdpService
rem net stop 可以处理依赖关系
rem sc stop 是异步的rem net stop 不是异步,但有 timeout 时间
rem TermService 运行后UmRdpService 会自动运行
net stop TermService /y
net start TermService
rem 设置防火墙
rem 各个版本的防火墙自带的 rdp 规则略有不同
rem 全部版本都有: program=%SystemRoot%\system32\svchost.exe service=TermService
@ -43,5 +33,25 @@ for %%a in (TCP, UDP) do (
localport=%RdpPort%
)
rem 删除此脚本
rem 家庭版没有 rdp 服务
sc query TermService
if %errorlevel% == 1060 goto :del
rem 重启服务 可以用 sc 或者 net
rem UmRdpService 依赖 TermService
rem sc stop 不能处理依赖关系,因此 sc stop TermService 前需要 sc stop UmRdpService
rem net stop 可以处理依赖关系
rem sc stop 是异步的rem net stop 不是异步,但有 timeout 时间
rem TermService 运行后UmRdpService 会自动运行
rem 如果刚好系统在启动 rdp 服务,则会失败,因此要用 goto 循环
rem The Remote Desktop Services service could not be stopped.
:restartRDP
net stop TermService /y && net start TermService || (
timeout 5
goto :restartRDP
)
:del
del "%~f0"