【自译】在 Windows 10/ 11 设置可以创建多个RDP远程桌面会话(1) - RDP Wrapper: 在 Windows 上启用多个 RDP 会话

发布时间 2023-06-20 17:23:04作者: Jianrung

远程用户可以通过远程桌面服务 (RDP) 连接到其 Windows 10/11 计算机。在设备设置中启用RDP并使用任何远程桌面客户端连接到计算机就足够了。
但是,同时进行的 RDP 会话的数量存在限制, 只有一个远程用户可以同时工作。如果尝试打开第二个 RDP 会话,将显示一条警告,要求您断开第一个用户的会话。

其他用户已登录。如果继续,它们将断开连接。是否仍要登录?

所有桌面 Windows 版本(包括 Win 10 和 11)对远程桌面服务使用有许多限制:

  1. 您只能通过 RDP 远程连接到更高版本的 Windows(专业版和企业版)。在 Windows 家庭版和单语言版本中,禁止传入的远程桌面连接;
  2. 仅支持一个同时 RDP 连接。当您尝试打开第二个 RDP 会话时,系统会提示用户关闭活动连接;
  3. 如果有用户在计算机的控制台(本地)上工作,则当您尝试创建新的远程 RDP 连接时,控制台会话将断开连接。如果用户尝试在本地登录,远程 RDP 会话也会被强制断开连接。

实际上,Windows上同时RDP连接的数量受许可证的限制(不受任何技术方面的限制)。因此,此限制不允许基于可由多个用户使用的工作站创建终端 RDP 服务器。
微软的逻辑很简单:如果您需要终端服务器 - 购买Windows Server许可证,RDS CAL,安装和配置远程桌面会话主机(RDSH)角色。

从技术上讲,任何具有足够RAM的Windows版本都可以支持数十个远程用户的同时操作。平均一个用户会话(不包括正在运行的应用程序)需要 150-200 MB 的 RAM。
同时这些进行RDP会话的最大数量理论上仅受计算机资源的限制。

让我们考虑如何在 Windows 10/11 上允许同时 RDP 连接的两种方法:使用 RDP Wrapper Tool或修改 termsrv.dll 系统文件。


注意:本文中描述的系统修改被视为违反 Microsoft 许可协议,您需要自行承担执行这些修改的风险。

RDP Wrapper: 在 Windows 上启用多个 RDP 会话


RDP Wrapper Library 开源项目允许您在 Windows 10 上启用多个 RDP 会话,而无需替换 termsrv.dll 文件。
此工具用作 SCM(服务控制管理器)和远程桌面服务之间的层。RDPWrap不仅允许您启用对多个同时RDP连接的支持,还允许您在Windows家庭版上构建RDP服务器。
RDP Wrapper不会对 termsrv.dll 文件进行任何更改,它只是使用更改的参数加载 termsrv库。
因此,即使在 termsrv.dll 文件更新的情况下,RDPWrap 也可以工作。它让您不必担心Windows更新。

重要: 在安装 RDP 包装器之前,请务必确保您使用的是 termsrv.dll 文件的原始(未修补)版本。否则,RDP Wrapper可能会变得不稳定或根本无法启动。

您可以从GitHub 存储库下载 RDP Wrapper(RDP Wrapper的最新可用版本是 v1.6.2)。
该项目自 2017 年以来一直没有更新,但它可以在 Windows 10 甚至 Windows 11 的所有新版本中使用。

RDPWrap-v1.6.2.zip 存档包含一些文件:

  • RDPWinst.exe — RDP Wrapper库安装/卸载程序;
  • RDPConf.exe — RDP Wrapper配置工具;
  • RDPCheck.exe — 一个 RDP 检查实用程序(本地 RDP 检查器);
  • install.bat,uninstall.bat, update.bat — 用于安装、卸载和更新RDP Wrapper的批处理文件。

若要安装 RDPWrap,请以管理员身份运行 **install.bat** 文件。该程序将安装到 C:\Program Files\RDP Wrapper目录中。


安装完成后,运行RDPConfig.exe。很有可能在安装后,该工具将立即显示RDP Wrapper正在运行 (Installed, Running, Listening),但不起作用。
请注意红色警告[not supported]。它报告此版本的 Windows 10(版本 10.0.19041.2913)不受 RDPWrapper 支持。

事实是,对于每个版本的Windows 10,rdpwrap.ini配置文件中都必须有一个描述。您的配置文件根本没有适用于您的Windows 10版本的相关设置。

rdpwrap.ini获取方式有两种:

  1. github仓库issues搜索对应版本号,看看是否有人提供。

  1. 在此处下载 https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini

手动复制对应版本配置内容复制增加到“C:\Program Files\RDP Wrapper\rdpwrap.ini”文件中。
或者下载rdpwrap.ini的完整文件替换“C:\Program Files\RDP Wrapper\rdpwrap.ini”文件


或者使用 PowerShell cmdlet Invoke-WebRequest 下载文件(必须先停止远程桌面服务):

Stop-Service termservice -Force
Invoke-WebRequest https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini -outfile "C:\Program Files\RDP Wrapper\rdpwrap.ini"


重新启动计算机,运行 RDPConfig.exe 工具。检查Diagnostics部分的所有项目是否为绿色,并显示[Fully supported]。

下面的屏幕截图显示,具有此新配置的RDP Wrapper在Windows 11上也可以正常工作。


尝试与您的计算机建立多个 RDP 会话(使用任何 RDP 客户端:mstsc.exe、rdcman 等)。
现在,您的 Windows 10 允许两个(或更多)远程用户同时使用不同的 RDP 会话。


RDPWrap工具在所有Windows版本中都受支持,因此您可以在任何Windows设备上构建自己的终端(RDS)服务器。
另外,RDP Wrapper支持如下设置:

  • Enable Remote Desktop(启用远程桌面);
  • Hide users on logon screen(在登录屏幕上隐藏用户),可以在 Windows 登录屏幕隐藏用户列表;
  • Single session per user(每个用户一个会话),如果禁用Single session per user选项,则允许在同一用户帐户下同时进行多个 RDP 会话(对应注册表“计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” 参数 fSingleSessionPerUser = 0);

  • RDP Port(RDP端口),您可以将远程桌面端口号从 TCP 3389 更改为任何其他端口号;
  • Session Shadowing Mode(会话重影模式),在会话重影模式部分中,可以将远程控制(影子)连接模式配置为 RDP 会话。

可以使用 GPO 设置 RDP 会话持续时间的限制。


(未完待续)