
Windows 10 暴力支持多用户 RDP

众所周知,Windows 是个单用户系统,尽管这并非什么技术架构上的限制,而是微软对系统做出的人为限制。事实上,Windows Server,Windows 企业版多会话,以及 Windows IoT 企业版就都是支持多个用户(尽管正常情况下最多两个)同时登录的。那么有没有什么办法使普通的 Windows 版本也支持多用户登录呢?
给 termsrv.dll 打补丁
首先,你的 Windows 至少得是专业版及以上。像家庭版,本来就不支持远程桌面,也就不用关心什么给远程桌面服务打补丁了。
目前最常使用的方法就是给 termsrv.dll 这个文件打补丁来实现多用户登录;打补丁可以使用 TermsrvPatcher,也可以使用十六进制编辑器自己手动打。
使用 TermsrvPatcher
项目地址:https://github.com/geissbuehler/TermsrvPatcher
虽然说软件已经有点年头,但是稍微配置一下,也是好使的。
刚刚打开,有可能会提示找不到任何可用的补丁。这是正常现象,毕竟软件已经有点年头,不过没关系,我们可以修改它的配置文件。
在软件的目录下面,应该会有个名叫 Patches.txt 的文件。我们在这个文件的最下方添加这么一行:
x64, 39 81 3C 06 00 00 0F 84 * * * *, B8 00 01 00 00 89 81 38 06 00 00 90
然后再次打开软件,可以看到 Patch 按钮亮起来了。那么还等什么,按下去就是了。
再次打开软件,这时候如果显示的是 “…indicates patched termsrv.dll” 就说明补丁成功。
如果还是不行,那么请接下去看手动打补丁的方式。
使用十六进制编辑器
实际上刚才的那个软件只是帮助我们自动化了接下来手动补丁的备份、提权、修改的流程。
首先我们需要一个十六进制编辑器。随便拿一个自己趁手的就行,我这里使用的是 HxD。
第一步,以管理员身份打开命令提示符。
接下来,备份一下原始的 termsrv.dll:
copy c:\Windows\System32\termsrv.dll termsrv.dll_backup
然后开始提权:
takeown /F c:\Windows\System32\termsrv.dll /A
icacls c:\Windows\System32\termsrv.dll /grant Administrators:F
最后停止远程桌面服务:
net stop TermService
(这里顺带解释一下为什么“远程桌面服务”的名字会是“TermService”:因为这个东西刚刚出现的时候,名字叫“终端服务”……)
至此准备工作结束,我们以管理员身份打开 HxD,然后打开 C:\Windows\System32\termsrv.dll 这个文件。
按 Ctrl + F 打开搜索,选择“字节序列”,然后搜索 39 81 3C 06 00 00 0F 84
:
只会找到一个地方。如果找不到,可以把搜索方向改成“从头”再试一次。
接下来,选中这 8 个字节以及接下来的 4 个字节的数据,并且将其替换成 B8 00 01 00 00 89 81 38 06 00 00 90
:
按 Ctrl + S 保存。如果弹出这样的一个窗口,直接选择“是”,不会影响使用:
最后重新启动远程桌面服务:
net start TermService
使用 RDPWrap
这款软件也是许久没有更新,新系统不一定适用了。(甚至我的 Windows 10 LTSC 2019 都无法兼容。)
项目地址:https://github.com/stascorp/rdpwrap
与 TermsrvPatcher 一样,如果要支持新系统,则必须修改相关的配置文件。有的时候可能会有热心用户在 Issues 里面给出适配新系统的配置,可以多留心一点。
这里因为我的系统不兼容,没有办法详细介绍。
安装的时候,需要使用 install.bat 或者官方的 MSI 安装包。RDPWInst.exe 是一个命令行工具,直接执行不会有效果。
安装完可以在 RDPConf.exe 里面看到详细信息:
另外,如果使用 RDPWrap,那么需要确保 termsrv.dll 是原版没有打过补丁的。也就是说上面的方法和该方法只能二选一;否则容易出现问题。
检查补丁是否成功
首先需要新建一个用户。
Win + R 输入 lusrmgr.msc,打开本地用户和组控制台。
新建一个用户,注意必须设置一个密码,否则默认情况下不能登录远程桌面:
不要忘了把用户添加到允许远程桌面的用户当中。如果你嫌麻烦,也可以直接把用户添加到 Administrators 组当中。
如果你采用 RDPWrap,那么软件自己就带有一个 RDPCheck.exe 可以用来检查。
否则请 Win + R 输入 mstsc,打开远程桌面连接。
计算机输入 127.0.0.2。(注意不能输入 127.0.0.1、实际的内网 IP 地址等。会被 Windows 拦下来。)
尝试用刚刚创建的用户登录。
如果一切正常,那么应该可以顺利登录,不会再提示“其它用户已登录到这台电脑…”了!
效果展示: