- 更新:2022-04-06 21:32:39
- 首发:2022-04-06 18:23:37
- 教程
- 45668
Windows server系列系统是支持多用户同时连接远程桌面独立使用互不影响的,但是常规版本并未直接支持。如果您使用Windows Vista、Windows 7/8/8.1/10的配置参考:https://github.com/stascorp/rdpwrap。win11中无需安装此软件。
在Win11中配置多用户同时登陆远程桌面(并发远程桌面RDP)之前,请先确保已开启远程桌面并单用户访问运行正常。
需要注意的是,除非手动修改,否则在Win11的设置
-账户
-家庭和其他用户
中添加其他用户
默认添加的是Microsoft用户
而不是本地用户
,添加用户后还需要在设置
-系统
-远程桌面
-远程桌面用户
中添加新配置的用户,操作完成后,还必须使用真实显示器本地登录一次Microsoft用户
才能将此用户用于远程桌面访问(首次登录需要配置用户信息),否则将提示无法使用此凭据
,类似于密码错误的提示。需要通过管理登录并关闭为了提高安全性,仅允许对此设备上的Microsoft账户使用Windows Hello登录
,否则可能导致部分场景下无法使用Microsoft用户
进行远程登录。
配置远程桌面服务
打开编辑组策略
应用,进入本地计算机策略
-计算机配置
-管理模板
-Windows组件
-远程桌面服务
-远程桌面会话主机
-连接
。
启用允许用户通过使用远程桌面服务进行远程连接
,启用限制连接的数量
并修改为999
,启用将远程桌面服务用户限制到单独的远程桌面服务会话
,这样设置的目的是使得多用户链接的时候重新链接能恢复之前的工作而不是新开启一个会话(丢失桌面)。另外,推荐客户端为MacOS的用户启用选择 RDP 传输协议
并选择同时使用UDP和TCP
,同时使用Microsoft Remote Desktop Beta
优化使用体验。
修改/替换系统文件
多用户同时使用远程桌面,会提示必须下线对端用户,为了实现多用户同时使用且互不干扰,需要修改win11操作系统的C:\Windows\System32\termsrv.dll
文件。
先将该文件复制出来,此DLL文件可以使用任何HEX编辑器(例如 Tiny Hexer
)进行修改。您可以通过替换下面显示的字符串来自己完成此操作,或者只需点此下载补丁(基于2022-04-06日Windows 11 专业版 21H2 22000.469进行修改)替换该文件。
手工修改方法
HEX编辑器查找(注意,查找的最后四组XX
可以是任何数字):
39 81 3C 06 00 00 0F 84 XX XX XX XX
替换为:
B8 00 01 00 00 89 81 38 06 00 00 90
替换方法
如果您是直接下载的补丁,实现方法是:使用解压后的termsrv.dll
替换C:\Windows\System32\termsrv.dll
文件。但是无法直接替换。
无论是直接下载的补丁还是修改完成后文件,都需要先接管termsrv.dll
文件,为自己分配管理员权限,然后停止远程桌面相关服务TermService
才能替换该文件。具体操作如下:
使用可以获取管理员权限(处于管理员组
的账户)的账户本地登录,先备份原有的C:\Windows\System32\termsrv.dll
文件,然后右键属性
-安全
-高级
,点击所有者右边的更改
。
在弹出来的窗口中选择高级
-立即查找
。搜索结果会显示所有用户,选择Administrators
,注意有两个相似Administrator
名称,选择最后面有s
的这个Administrators
。
然后一直点确定
,最后关闭属性窗口,重新右键打开属性
-安全
,修改Administrators
的权限,增加修改
权限。
打开服务
,找到Remote Desktop Services
,关闭服务。
至此,即可使用termsrv.dll
替换C:\Windows\System32\termsrv.dll
文件。(如果替换失败,打开任务管理器
-服务
,确认TermService
处于已停止
的状态。)
替换完成后,重新开启Remote Desktop Services
服务。
启动服务后,您的Win11即可多用户同时登录远程桌面了。
这个方法win10ltsc是否适用?
win10 请使用文中提到的开源仓库
win11成功按照您的博客配置,写的非常仔细,谢谢您!
跟高兴帮到您!
5月份第一次弄是成功的,6月系统更新重新用你的方法后,电脑都进不去了,登录每一个用户都显示远程过程调用失败,怎么办,急
需要用新版本的文件对应修改,不能用老文件替换
需要用新版本的文件对应修改,不能用老文件替换
39 81 3C 06 00 00 0F 84 XX XX XX XX 这一段字符我在termsrv.dll文件上怎么找到的和文章里的不一样》有图例吗?我电脑上的是0039 81 3C 06 00 00 0F 84 XX XX XX这样的
先搜索前几位试试
搜39813C只有一个,但后面就是缺少两个字符的位置
方便贴一下具体数字吗?
0039 813C 0600 000F 840B 6F01
这是一样的呀,X 代表可以是任意数字
博客中是更改8位16进制数,我的环境上后面只有6位,这个没法对应呀
对应数字个数,可以换行的
哦哦,多谢多谢,我试试,我以为只能更改同一行的
为何过两天又不行了?
因为系统更新了,系统更新均会替换此文件,因此更新后需要重复修改过程。先手动修改吧,等我有空的时候搞个小程序处理。
因为系统更新了,系统更新均会替换此文件,因此更新后需要重复修改过程。先手动修改吧,等我有空的时候搞个小程序处理。
写一个bat文件自动批处理如何?手动太麻烦了了。
没错,用批处理解决是非常合适的!
配置完成后为什么远程桌面显示
“计算机无法连接到远程计算机上的另一个控制台会话,原因是你正在运行一个控制台会话。”
这个问题应该是修改没有成功,可能与系统版本更新有关系。
好像失效了 修改后远程桌面服务起不来 报错误1068 23H2 22631.1826 版本
最近有点忙,先找找别的方案吧。不好意思。
我按照楼主的方法写了个python脚本,放到github了Techy-Wu/Multi-user-RDP-for-Win: A small script is to detect the multi-user statues. The method to enable the multi-user mode of RDP service for windows is also attached. (github.com),还请批评指正
❤️ 太酷了!!
请问老师们,这个文件修改用什么软件可以进行修改?
HEX编辑器
即可。
关于hex编辑器,网上没找到特别好用的(小白没办法),最后在vscode上扩展一搜hex,第一个安装一下就可以用vscode进行hex编译了
好思路呀!!
感谢回复! Clang 在生成时沿用了 GCC 的版本号标识,我是不是可以理解为Clang 18.1.4生成时使用的就是GCC4.8,所以我后续使用gcc 9.4
gcov
就会有不兼容的问题抱歉,这块我也不太清楚,尝试寻求AI的帮助吧。
我在这个过程中遇到了各种问题- -,现在在UDC core: g_serial: couldn't find an available UDC卡住了,请问大佬有什么解决方案吗,还是说我前置的设置就错了呢,> 这个需求很特殊。是可以的,但是比较困难,需要修改驱动配置。
好思路呀!!
关于hex编辑器,网上没找到特别好用的(小白没办法),最后在vscode上扩展一搜hex,第一个安装一下就可以用vscode进行hex编译了