当新用户尝试通过 Windows Server 2008 R2 中的 RDP 登录时,“没有足够的存储可用于处理此命令”错误

本文提供了一个解决方案,用于解决新用户通过远程桌面协议(RDP)连接到服务器时发生的错误。

适用于: Windows Server 2008 R2 Service Pack 1
原始 KB 数: 2877056

现象

你有一台基于 Windows Server 2008 R2 的计算机,该计算机不是域的成员。 服务器的管理员创建也是管理员的新用户,为新用户设置密码,并选择在下次登录时要求更改密码的选项。 当新用户通过远程桌面协议(RDP)连接到服务器进行首次登录时,系统会提示其输入新密码。 当用户键入新密码并尝试继续时,他或她会收到以下错误消息:

没有足够的存储可用于处理此命令。

密码不会更改,当用户尝试再次登录时收到相同的错误消息。

原因

出现此问题的原因是 RPC 运行时收到错误。

具体而言,发生的方案如下所示:

密码更改请求过程由本地安全机构(LSA)放入匿名访问令牌中。 之所以发生这种情况,是因为密码无效,因此用户不会进行身份验证。 使用此令牌,密码更改请求将通过 RPC 传递到本地安全帐户管理器(SAM)。 (之所以使用 RPC,是因为此时也可能远程发送请求。RPC 运行时读取系统策略以确定正确的配置。 (配置为密钥 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Rpc.中的“Server2003NegotiateDisable” )

在此方案中,RPC 运行时收到此请求的错误 5“ACCESS_DENIED”,并将其映射到 RPC 错误 15“RPC_S_OUT_OF_MEMORY”。

解决方法

若要解决此问题,请使用以下一种方法:

  1. 使用设施远程更改用户的密码,以在用户通过 RDS 连接之前设置密码。
  2. 更改以下注册表项上的注册表权限以启用 ANONYMOUS LOGON 的读取访问权限,然后继承注册表树中的读取权限: HKEY_LOCAL_MACHINE\SOFTWARE\Policies
    在 Windows Server 2012 中,服务器拒绝密码过期或设置为在下一次登录时更改的用户的登录。 在这种情况下,必须使用方法 1 来设置密码。