Windows / 疑难杂症 · 7 3 月, 2026 0

Windows远程桌面不弹出密码框?原因竟是“空密码账户”

发生什么事了

在排查某台 Windows 10 机器的远程桌面(RDP)问题时,我遇到一个非常诡异的现象:

连接远程桌面时,系统完全不询问用户名和密码,直接进入桌面。

更离谱的是:我明明给账户设置了密码,且并没有保存任何凭据。

这类现象通常意味着:
RDP 在自动尝试某个本地账户的空密码,并且成功了。

最终定位到的根因是:
目标主机上存在启用状态的本地账户,但这些账户被标记为“不需要密码”,导致它们是空密码账户。

而 RDP 在局域网环境下会自动尝试这些账户,从而绕过凭据输入界面。

下面是完整的排查过程与解决方案。


🔍 1. 使用PowerShell检查本地账户密码状态

在目标机上运行:

Get-LocalUser | Select Name, PasswordRequired, Enabled

输出中我发现两个可疑账户:

aaaa   PasswordRequired = False   Enabled = True
bbbb   PasswordRequired = False   Enabled = True

这意味着:

  • 这两个账户是启用状态
  • 但系统认为它们“不需要密码”
  • 因此它们是空密码账户

只要目标机允许空密码远程登录,RDP 就会自动尝试这些账户 → 直接登录成功 → 不会弹出密码框。


🛠️ 2. 解决方法:强制要求账户必须有密码

对每个空密码账户执行:

步骤 1:开启密码需求(关键)

net user aaaa /passwordreq:yes

步骤 2:设置真正的密码

net user aaaa MyStrongPassword123!

步骤 3:验证

Get-LocalUser | Select Name, PasswordRequired

你应该看到:

aaaa   True

此时:

  • 账户不再是空密码
  • RDP 不会再自动登录
  • 会正常弹出用户名密码窗口

问题彻底解决。


🔍 3. 为何明明设置了密码,但PasswordRequired仍然是False?

这是 Windows 最坑的地方:

如果账户被标记为“不需要密码”,Windows 会拒绝写入密码,但不会报错。

也就是说:

  • GUI 设置密码 → 看似成功,但实际上没写进去
  • PowerShell Set-LocalUser → 也是假成功
  • PasswordRequired 永远是 False
  • 账户仍然是空密码
  • RDP 仍然能直接登录

只有一个命令能真正修改这个标志位:

net user <username> /passwordreq:yes

这是底层 SAM 的开关,其他方法都不会触碰它。

为什么会出现这种“空密码账户”?

常见原因包括:

  • OEM 或软件创建的隐藏服务账户
  • 管理员误操作
  • 系统策略被修改
  • 账户曾被禁用/启用,标志位异常
  • 使用 Microsoft 帐号登录导致本地密码为空

无论原因是什么,只要:

PasswordRequired = False
Enabled = True

这个账户就会成为 RDP 自动登录的“突破口”。