随机
Enter 搜索 ↑↓ 切换 Esc 清空

win-rdp-setup

命令

Windows 远程桌面(RDP)配置

适用范围

1. 用户账户基础管理

1.1 查看本机全部用户(CMD)

net user

1.2 PowerShell 查看账户详细信息

# 查看单个账户状态
Get-LocalUser -Name "Administrator"

# 完整详情输出(常用属性)
Get-LocalUser Administrator | fl Name,Enabled,PrincipalSource,PasswordExpired

# 列出所有本地账户,并区分账户来源类型
Get-LocalUser | select Name,Enabled,PrincipalSource

PrincipalSource 说明:

  • Local → 纯本地账户,RDP 稳定可靠
  • MicrosoftAccount → 绑定微软云账户,RDP 易出现 Hello/PIN/NLA 认证问题

1.3 启用被禁用的账户

Enable-LocalUser -Name "Administrator"

1.4 设置账户密码(交互式,不输出明文)

$secpwd = Read-Host "输入账户新密码" -AsSecureString
Set-LocalUser -Name "Administrator" -Password $secpwd

1.5 创建全新纯本地管理员账户(推荐用于 RDP)

$secpwd = Read-Host "设置本地管理员密码" -AsSecureString
New-LocalUser -Name "localadmin" -Password $secpwd -FullName "本地远程管理员" -PasswordNeverExpires $true
Add-LocalGroupMember -Group "Administrators" -Name "localadmin"
Add-LocalGroupMember -Group "Remote Desktop Users" -Name "localadmin"

该账户为纯本地账户,不受微软账户认证限制,适合长期远程管理。

2. RDP 权限配置(组策略与安全策略)

核心原则:

  • Administrators 组成员默认允许 RDP,无需加入 Remote Desktop Users
  • 普通(非管理员)账号若要远程登录,必须加入 Remote Desktop Users 组

2.1 将用户加入远程桌面用户组

CMD 版本:

net localgroup "Remote Desktop Users" "用户名" /add

PowerShell 版本:

Add-LocalGroupMember -Group "Remote Desktop Users" -Name "用户名"

2.2 查看远程桌面用户组成员

Get-LocalGroupMember -Group "Remote Desktop Users"

2.3 查看管理员组成员

Get-LocalGroupMember -Group "Administrators"

2.4 导出安全策略,检查 RDP 允许/拒绝登录列表

secedit /export /cfg c:\secpol.cfg
type c:\secpol.cfg | findstr SeRemoteInteractive

示例:拒绝内置 Administrator 远程登录(账户仍可本地登录) 内置 Administrator 的 SID 固定为 S-1-5-32-500,推荐使用 SID 配置策略,不受账户重命名影响。

2.5 刷新本地安全策略,立即生效

gpupdate /force

3. RDP 服务与防火墙检查

3.1 检查 RDP 服务状态

Get-Service TermService

状态必须为 Running。若未运行,手动启动:

Start-Service TermService

重启服务(更改配置后常用):

Restart-Service TermService -Force

3.2 RDP 关键注册表参数

# fDenyTSConnections:0 开启 RDP,1 关闭 RDP
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections

# UserAuthentication:1 启用 NLA(网络级别身份验证),0 关闭 NLA(仅排错时临时使用)
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication

开启 RDP 命令:

Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections -Value 0
Restart-Service TermService -Force

3.3 防火墙放行 RDP

Get-NetFirewallRule -Name *RemoteDesktop* | select Name,Enabled

确保 RemoteDesktop-UserMode-TCP-In 的 Enabled 为 True。 若未启用,可通过以下命令开启(管理员):

Enable-NetFirewallRule -Name "RemoteDesktop-UserMode-TCP-In"

4. 网络信息与 RDP 端口配置

4.1 查看本机 IPv4 地址

CMD 方式:

ipconfig

仅查看 IPv4 地址(过滤输出):

@for /f "tokens=2 delims=:" %i in ('ipconfig ^| findstr "IPv4"') do @for /f %j in ("%i") do @echo %j

PowerShell 方式(推荐,输出更清晰):

Get-NetIPAddress -AddressFamily IPv4 | select InterfaceAlias,IPAddress,PrefixLength

仅查看非回环的有效 IPv4 地址:

Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -ne "127.0.0.1" } | select IPAddress,InterfaceAlias

查看网关和 DNS 信息:

Get-NetIPConfiguration -Detailed | Select-Object InterfaceAlias,InterfaceDescription,
@{n='IPv4地址';e={$_.IPv4Address.IPAddress}},
@{n='网关';e={$_.IPv4DefaultGateway.NextHop}},
@{n='DNS';e={$_.DNSServer.ServerAddresses}} | Format-List

RDP 连接时需要使用目标机器的 IPv4 地址(或主机名),确保客户端与服务器在同一网络或可通过该地址路由到达。

4.2 RDP 默认端口说明

4.3 查看当前 RDP 端口

reg query "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber

输出中的 PortNumber 为十进制值,需要转换。若显示 0x00000d3d,则十进制为 3389。

PowerShell 直接查看十进制端口:

(Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber).PortNumber

4.4 修改 RDP 端口(管理员)

修改注册表将 RDP 端口改为自定义值(例如 13389):

reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 13389 /f

修改后需重启服务并更新防火墙规则:

Restart-Service TermService -Force
Enable-NetFirewallRule -Name "RemoteDesktop-UserMode-TCP-In"

修改端口后,客户端连接时需手动指定新端口:mstsc /v:192.168.1.100:13389

4.5 检查网络连通性

在客户端(本地电脑)测试到服务器的 RDP 端口是否可达:

telnet 192.168.1.100 3389

或使用 PowerShell 测试端口:

Test-NetConnection -ComputerName 192.168.1.100 -Port 3389

若 TcpTestSucceeded 为 True,说明端口可达;若为 False,需检查防火墙和网络路由。

5. 会话查询与会话注销

5.1 查看当前登录会话

query user

输出示例:

 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
 user1                 console             1  Active      .       2026/08/20 10:00
 user2                 rdp-tcp#3           2  Active      .       2026/08/20 10:05

5.2 查看全部会话(包含已断开但未注销的残留会话)

query session

5.3 注销指定会话(释放占用资源)

logoff 会话ID

例如注销 ID 为 2 的会话:

logoff 2

6. 客户端历史凭据清理(在本地电脑执行,非远程服务器)

当 RDP 客户端(mstsc)保存了错误的凭据或历史 IP,导致连接异常时,可执行以下批处理一键清理。

一键清理批处理(CMD 管理员或普通用户均可)

taskkill /im mstsc.exe /f >nul 2>&1
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /va /f >nul 2>&1
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /f >nul 2>&1
reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" >nul 2>&1
del /f /q /a:s:h "%USERPROFILE%\Documents\Default.rdp" >nul 2>&1
for /f "tokens=2 delims= " %%a in ('cmdkey /list ^| findstr Target^=TERMSRV') do cmdkey /delete %%a >nul 2>&1
del /f /q %AppData%\Microsoft\Windows\Recent\AutomaticDestinations\*.automaticDestinations-ms >nul 2>&1

强制弹出密码输入框(忽略保存的凭据)

mstsc /v:目标IP /prompt

图形化打开凭据管理器

control /name Microsoft.CredentialManager

在"Windows 凭据"下删除所有以 TERMSRV/ 开头的条目。

7. 常见加固操作(保留账户、禁止 RDP、锁屏隐藏)

场景:需要保留 Administrator 账户用于本地或服务运行,但禁止其远程登录,同时不在锁屏界面显示该账户磁贴。

7.1 通过安全策略拒绝 Administrator 远程登录

导出当前策略或直接使用 secpol.msc 图形界面,在"本地策略" → "用户权限分配" → "拒绝通过远程桌面服务登录"中添加 Administrator 账户或其 SID S-1-5-32-500。

命令行方式(需管理员):

secedit /export /cfg c:\secpol.cfg
# 编辑 c:\secpol.cfg,在 SeDenyRemoteInteractiveLogonRight 后添加 *S-1-5-32-500
secedit /configure /cfg c:\secpol.cfg /db c:\secpol.db
gpupdate /force

7.2 锁屏界面隐藏 Administrator(注册表)

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList" /v Administrator /t REG_DWORD /d 0 /f

风险提示:操作前务必确认存在另一个可用的 RDP 管理员账户,以免锁死后失去远程管理入口。

8. 常见故障排查

8.1 微软账户 RDP 报错"用户账户当前被禁用"

现象:账户实际已启用,但 RDP 提示被禁用,常伴有 Windows Hello / PIN 冲突。

解决方法:

  1. 打开 设置 → 账户 → 登录选项,关闭「为提高安全性,仅允许此设备上的 Microsoft 账户使用 Windows Hello 登录」(若存在该选项)
  2. 在本地锁屏界面,使用微软账户的网页密码(非 PIN)登录一次,完成凭据缓存
  3. RDP 连接时,用户名格式必须为 MicrosoftAccount\邮箱地址(见第 10 节)
  4. 若问题依旧,可临时关闭 NLA 测试(UserAuthentication=0),验证成功后改回 1
  5. 写入注册表修复 UAC 远程令牌过滤问题(管理员):
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

最彻底的解决方案:新建纯本地账户作为远程管理专用账号。

8.2 mstsc 不弹出密码输入窗口(直接尝试自动登录失败)

原因:客户端凭据管理器残留了 TERMSRV 凭据。 解决:执行第 6 节的清理命令,或使用 /prompt 参数强制弹窗。

8.3 登录失败,查看详细错误日志

打开 事件查看器 → Windows 日志 → 安全,筛选事件 ID 4625(登录失败),查看"失败子状态码"可定位具体原因(如密码错误、账户受限、NLA 不匹配等)。

常见子状态码:

子状态码 含义
0xC000006A 密码错误
0xC000006D 用户名或密码错误(通用)
0xC0000072 账户被禁用
0xC0000193 账户过期
0xC0000224 需要更改密码(首次登录)
0xC0000234 账户锁定

9. 一键校验全套状态脚本

以管理员身份运行 PowerShell,快速检查 RDP 关键状态:

Write-Host "=====本机IPv4地址===="
Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -ne "127.0.0.1" } | select IPAddress,InterfaceAlias

Write-Host "`n=====本地账户列表===="
Get-LocalUser | select Name,Enabled,PrincipalSource

Write-Host "`n=====Administrators管理员组===="
Get-LocalGroupMember -Group "Administrators"

Write-Host "`n=====Remote Desktop Users组===="
Get-LocalGroupMember -Group "Remote Desktop Users"

Write-Host "`n=====RDP服务状态===="
Get-Service TermService

Write-Host "`n=====RDP注册表开关===="
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication

Write-Host "`n=====RDP端口号===="
(Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber).PortNumber

Write-Host "`n=====当前登录会话===="
query user

Write-Host "`n=====导出RDP安全策略===="
secedit /export /cfg c:\secpol.check.cfg
type c:\secpol.check.cfg | findstr SeRemoteInteractive

Write-Host "`n=====防火墙规则状态===="
Get-NetFirewallRule -Name *RemoteDesktop* | select DisplayName,Enabled

Write-Host "`n=====校验完成===="

10. RDP 登录用户名格式速查表

账户类型 RDP 用户名写法 密码说明
纯本地账户 用户名 或 .\用户名 使用本地账户密码,无需联网验证
微软账户 MicrosoftAccount\邮箱地址(例如 MicrosoftAccount\user@outlook.com) 使用微软网页账号密码(绝不能填写 PIN 或 Hello 指纹),目标机器需联网校验
域账户(如有) 域名\用户名 使用域密码,需域控可达

重要提醒:

  • 空密码的本地账户默认禁止 RDP 登录(需修改组策略或设置非空密码)
  • 生产环境强烈建议保持 NLA(UserAuthentication=1)开启,不要长期关闭
  • 执行任何加固操作前,务必确保至少存在一个可用的远程管理账号,避免将自己锁在门外

总结