使用 DNS 主机名或 IP 远程登录 (RDP) 服务器,同一用户帐户即可获得两个桌面

使用 DNS 主机名或 IP 远程登录 (RDP) 服务器,同一用户帐户即可获得两个桌面

我今天遇到了一个我不知道的有趣的情况。

A我使用服务器 DNS 主机名以用户身份登录SERVNAME,并获得了自己的会话和桌面。我在桌面上放了一些文件。

然后我的朋友也用同一个用户登录A,但使用服务器IP xxx.xx.xx.x和 Windows 为同一个用户和第二个版本的桌面创建了第二个会话A!他没有从我的桌面看到该文件,而且没有像我预期的那样将我踢出会话。

但如果他通过服务器名称连接,SERVNAME他就会将我踢出会话。

  • 是的,是同一台服务器。
  • 该选项Restrict each user to a single session设置为YesfSingleSessionPerUser = 1

怎么会这样?IP登录和域名登录有什么区别?

答案1

这里有两个问题:

1.) 为什么 Windows 终端服务不将用户限制A在一个会话中?

它说Users can open multiple sessions to a server that is restricted to a single session for each user.

它继续说This functionality is working as expected. This setting is limits each user to one unique session. However, if the user is running different initial programs, the sessions are considered as different sessions.

使用服务器的主机名而不是其 IP 地址足以让 Windows 认为会话是唯一的。

2.) 在我的会话中,桌面上有一个文件,为什么这个文件没有出现在第二个会话中?

Windows 正在创建 2 个唯一会话,因此它正在为用户的第二次登录创建第二个唯一配置文件A。如果转到命令提示符,您将看到一个会话在 中启动C:\Users\User A\,第二个会话是C:\Users\User A.000\。同样,从 Windows 文件资源管理器窗口查看 C:\Users。

答案2

我猜测,无论是通过 DNS 还是通过 IP 地址,发出 RDP 请求的计算机的标识都会有所不同。

差异可能在于用户名获得了不同的限定符,例如 WORKGROUP。

我建议使用这两种方法登录,然后在命令提示符(cmd)中使用我是谁命令来查找所使用的确切用户帐户:

whoami /user

如果有差异,那么你已经找到了答案。

[编辑]

由于您发现在这两种情况下,同一个域中都有完全相同的用户,并且具有相同的 SID,那么我唯一的解释就是您看不到的差异。可能是由于 DNS 请求,您的连接请求没有遵循使用 IP 地址时在网络中采用的确切路径。

我个人的结论是,在这种情况下,Windows 不会在正确的位置搜索连接,找不到现有连接,因此会打开新的会话/桌面。但是,当登录过程在此新桌面中执行时,它会使用正确的用户帐户/SID 登录,因此同一个用户最终会拥有两个桌面。

您可以使用登录会话 Sysinternals 提供的实用程序,它提供有关当前活动登录会话的更多详细信息。另一个可能有用的实用程序是EnumWinsta 图形用户界面 显示以下列表窗口站和台式机。

更多信息请参阅文章:
Windows Sysinternals:Windows 核心概念 - 会话、窗口站、桌面和窗口消息

换句话说,我认为这是 RDP 中未记录的错误,您应该报告。不幸的是,Microsoft Connect不接受 Windows 的错误,所以你唯一的选择是Microsoft Windows 论坛 并希望微软的某个人能够将其传递下去,以便在未来的某个未知的时间进行纠正。

答案3

解释

正如上面的评论所述,基于服务器的终端服务接受来自多个不同用户或(如果已配置)同一用户同时登录。

怎么会这样?IP登录和域名登录有什么区别?

没什么区别,你远程连接到同一台机器,只是使用两种不同的方法。1) 主机名只是查找并解析 IP;2) 使用 IP 而不是域名,就是这样基本 DNS

并发登录

终端服务器子项中有一个注册表值,负责多个相同的用户连接,它是 DWORD fSingleSessionPerUser

打开 regedit ( Windows Key+ R) -> regedit +enter

导航

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer

双击或者右键–>修改键值fSingleSessionPerUser

我想象值设置为0,将其更改为1

  • 0= 每个用户有多个会话
  • 1= 每个用户单个会话

应用更改并重新启动远程桌面服务。(见下文)

打开 cmd ( Windows Key+ R) -> cmd +enter

输入net stop termservice并按enter,然后net stop termserviceenter

上述答案是在最新版本的 Windows Server 2013 上测试的,我相信可以追溯到 Windows Server 2003。

相关内容