可直接用批处理调用powershell修改rdp端口,需管理员权限,同步更新两处注册表portnumber值并添加tcp/udp防火墙规则,重启termservice服务生效。
可以直接用批处理(.bat)调用 powershell 命令完成端口修改,但需以管理员身份运行,且必须同步更新两处注册表键值并配置防火墙规则。纯 cmd 无法直接写注册表 dword 值,所以实际依赖 powershell 执行核心操作。
批处理脚本结构说明
以下是一个完整、安全、可直接保存为 change-rdp-port.bat 的脚本,支持传入自定义端口号(如不传,默认改为 3390):
注意:首次运行前请手动启用远程桌面,并确保已备份注册表(脚本本身不自动备份)
- 脚本会检查是否以管理员身份运行,否则自动提权
- 读取参数 %1 作为目标端口,例如:
change-rdp-port.bat 58231 - 使用 PowerShell 同步修改两个 PortNumber 注册表项(十进制)
- 自动添加 TCP/UDP 入站防火墙规则(名称含“RDP-Custom”)
- 重启 TermService 服务,无需重启整机
可直接使用的批处理代码
复制以下全部内容,粘贴到记事本,另存为 change-rdp-port.bat(编码选 ANSI 或 UTF-8 无 BOM),右键 → “以管理员身份运行”:
@echo off :: 修改 Windows 远程桌面端口的批处理(需管理员权限) if not "%1"=="" set "PORT=%1" & goto :checkport set "PORT=3390" :checkport set /a PORTNUM=%PORT% 2>nul || (echo 错误:端口号必须是 1-65535 的整数 & pause & exit /b 1) if %PORTNUM% lss 1 if %PORTNUM% gtr 65535 (echo 错误:端口号超出范围 & pause & exit /b 1) :: 提权检查 net session >nul 2>&1 || (echo 请右键选择“以管理员身份运行” & pause & exit /b 1) :: 执行 PowerShell 修改(双路径 + 防火墙 + 重启服务) powershell -Command ^ "$p = %PORT%; ^ Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name 'PortNumber' -Value $p -Force; ^ Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp' -Name 'PortNumber' -Value $p -Force; ^ New-NetFirewallRule -DisplayName 'RDP-Custom-TCP-%PORT%' -Direction Inbound -Protocol TCP -LocalPort $p -Action Allow -Profile Any -Enabled True -ErrorAction SilentlyContinue; ^ New-NetFirewallRule -DisplayName 'RDP-Custom-UDP-%PORT%' -Direction Inbound -Protocol UDP -LocalPort $p -Action Allow -Profile Any -Enabled True -ErrorAction SilentlyContinue; ^ Restart-Service TermService -Force" echo. echo ✅ 远程桌面端口已改为 %PORT% echo ? 下次连接请使用格式:IP地址:%PORT% (例如 192.168.1.100:%PORT%) echo ?️ 防火墙规则已自动添加(TCP/UDP %PORT%) echo. pause
使用后验证是否生效
执行完脚本后,可立即验证:
- 在另一台电脑上用 mstsc.exe,输入
目标IP:%PORT%尝试连接 - 运行
reg query "HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /v PortNumber确认值已更新 - 打开「高级安全 Windows Defender 防火墙」→「入站规则」,查找含 RDP-Custom 的新规则
注意事项
该脚本不修改系统原有 3389 规则,也不禁用它——如需彻底停用旧端口,可手动在防火墙中禁用「远程桌面(TCP-In)」「远程桌面(UDP-In)」这两条默认规则。
若目标机器位于路由器后,还需登录路由器做端口映射(将公网端口指向内网IP:%PORT%),否则外网无法访问。











