本脚本功能强大,运行之后既可直接使用新端口进行远程访问。
说明:
1.本脚本能够开启远程桌面功能、设定远程桌面端口、
添加防火墙规则并禁用3389端口等的一系列功能,
并且不需要重新启动系统即可生效。
2.本脚本在 Windows Server 2012 R2 DataCenter 和 Windows Server 2012 DataCenter 简体中文版上测试成功。
理论上也支持 WS2012R2、WS2012、WS2008R2、WS2008、Win8、Win7、Vista 全系列64位、32位版本。
对于 WS2003、WinXP 等不支持高级防火墙的需要修改本脚本中防火墙相关命令。
对于非简体中文版本需要修改本脚本中防火墙相关命令。
3.请右键以管理员身份运行,如果没有请关闭本窗口,重新运行。
@echo off :: Code by xy 2013-01-10, 11,03-26 title 开启远程桌面 Code by xy 2013-01-10, 11,03-26 echo ------ 开启远程桌面 ------ echo 说明: echo 1.本脚本能够开启远程桌面功能、设定远程桌面端口、 echo 添加防火墙规则并禁用3389端口等的一系列功能, echo 并且不需要重新启动系统即可生效。 echo 2.本脚本在 Windows Server 2012 DataCenter 简体中文版上测试成功。 echo 理论上也支持 WS2012、WS2008R2、WS2008、Win8、Win7、Vista 全系列64位、32位版本。 echo 对于 WS2003、WinXP 等不支持高级防火墙的需要修改本脚本中防火墙相关命令。 echo 对于非简体中文版本需要修改本脚本中防火墙相关命令。 echo 3.请右键以管理员身份运行,如果没有请关闭本窗口,重新运行。 echo 4.执行完毕之后会有提示,请耐心等待。 echo. echo ------ 执行 ------ echo. echo 备份相关注册表项到 3389.reg.bak : reg export "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" 3389.reg.%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%.bak echo. set /p port=请输入端口: echo. echo 删除原端口防火墙规则... rem set /a n=0xff 转换16进制到10进制并赋予变量n for /f "tokens=3" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber^|find /i "PortNumber" ') do set /a pn=%%a if not %pn%==3389 ( netsh advfirewall firewall delete rule name=all protocol=tcp localport=%pn% netsh advfirewall firewall delete rule name=all protocol=udp localport=%pn% ) for /f "tokens=3" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber^|find /i "PortNumber" ') do set /a pn=%%a if not %pn%==3389 ( netsh advfirewall firewall delete rule name=all protocol=tcp localport=%pn% netsh advfirewall firewall delete rule name=all protocol=udp localport=%pn% ) echo. echo 添加新端口防火墙规则... netsh advfirewall firewall add rule name="%port% - rdp (TCP-In)" dir=in action=allow protocol=TCP localport=%port% netsh advfirewall firewall add rule name="%port% - rdp (UDP-In)" dir=in action=allow protocol=UDP localport=%port% echo. echo 禁用3389端口... netsh advfirewall firewall set rule group="远程桌面" new enable=no echo. echo 正在修改端口... reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d %port% /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d %port% /f echo. echo 正在启用远程桌面功能,稍后会断开连接... echo 请稍后使用新端口手动连接... reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f echo. echo 正在重启远程桌面服务... net stop "Remote Desktop Services" /y net start "Remote Desktop Services" echo. echo 执行完毕,按任意键关闭本窗口... pause >nul
对于不支持高级防火墙的早期windows版本,如WS2003、xp等可以使用如下脚本,但需要重新启动才能生效。
@echo off :: Code by xy 2013-01-10, 11 title 开启远程桌面 Code by xy 2013-01-10, 11 echo ------ 开启远程桌面 ------ echo 注意: echo 1.请先添加防火墙规则!!! echo 2.切记第一条!!! echo 3.仔细看下面的说明!!! echo 说明: echo 1.本脚本能够开启远程桌面功能、设定远程桌面端口,但需要重启才能生效。 echo 2.本脚本在 Windows Server 2012 DataCenter 简体中文版上测试成功。 echo 理论上也支持 WS12、WS08、WS03、W8、W7、Vista、XP 全系列64位、32位版本。 echo 3.执行完毕之后会有提示,请耐心等待。 echo. echo ------ 执行 ------ echo. set /p port=请输入端口: echo. echo 正在修改端口... reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d %port% /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d %port% /f echo. echo 正在启用远程桌面功能... reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f echo. echo 执行完毕,按任意键关闭本窗口... pause >nul