Windows 家庭版怎么开多用户远程桌面?RDP Wrapper 完整上手指南
【免费下载链接】rdpwrapRDP Wrapper Library项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap
RDP Wrapper 是一个开源项目,目标是在 Windows 家庭版、Basic 版这类"阉割版"系统上开出多用户远程桌面主机(RDP Host)能力。它用一个挂钩 DLL 顶替 TermService 的加载入口,解除 termsrv.dll 内置许可策略里"仅允许单一会话"的限制,让远程桌面可以多人并发。源码全部公开在仓库里,可自行编译、自行审计。
它到底解开了什么限制
Windows 消费级版本不带远程桌面主机功能,termsrv.dll 的 SLPolicy 查询只放行一个活动会话:你从外面连进来,本机桌面会被顶掉,想多开一个会话根本做不到。这是写进系统文件里的硬限制,改组策略、改注册表都绕不过去。
装好之后有三个实际变化:同一台机器可并发接受多路 RDP 连接,上限约 15 个会话,具体受硬件和 build 号影响;走的仍是原生 RDP 协议与 3389 端口,客户端直接用系统自带的 mstsc;termsrv.dll 原文件不做任何修改,系统版本也不用升级。
典型用法:一台旧台式机装家庭版当小服务器,几个人用各自账户同时远程登录办公,本机控制台保持可用。
从克隆到跑通
仓库里的res\legacy.install.bat是一份 x86 专用的精简安装脚本,它做四件事:把 rdpwrap.dll 拷到%ProgramFiles%\RDP Wrapper、把 TermService 的ServiceDll注册项指向该 dll、为 3389 端口开防火墙入站规则、启动服务。注意它要求当前目录存在编译好的 rdpwrap.dll——脚本不联网拉取。x86 机器可直接用 Visual Studio 2013 编译src-x86-x64-Fusix下的 C++ 版本,把生成的 dll 放进工作目录,再以管理员身份运行:
git clone https://gitcode.com/gh_mirrors/rd/rdpwrap cd rdpwrap res\legacy.install.bat看到Installation complete!即安装完成。这步跳过也行,后面用完整安装器补上;但 x64 系统这份脚本会直接拒绝,需要先自行构建对应版本。
跑通验证分两步。第一步确认服务在跑、端口在听:
sc query TermService netstat -ano | findstr :3389预期看到STATE : 4 RUNNING和一行0.0.0.0:3389 LISTENING。第二步从src-rdpcheck的 Delphi 源码(RAD Studio 2010 可编译)构建出 RDPCheck.exe 执行,能拿到服务状态、监听状态、build 支持情况三项完整检测;用 mstsc 连一次127.0.0.1,能弹出登录框就说明多用户链路已经通了。
要让挂钩真正生效,安装后需要重启机器,或结束承载 TermService 的 svchost 进程(脚本会打印 PID)后重新
net start TermService。
调整配置与并发会话数
运行参数由%ProgramFiles%\RDP Wrapper下的 rdpwrap.ini 控制,改完执行net stop TermService和net start TermService才会生效。仓库内 res/rdpwrap.ini 是同步维护的模板,结构为[Main]全局开关、[SLPolicy]策略返回值、按 termsrv.dll build 号分段的补丁偏移。最影响体验的三项:
| 配置项 | 作用 | 默认值 |
|---|---|---|
AllowMultipleSessions([SLPolicy] 段) | 允许超过 1 个活动会话 | 1(开启) |
TerminalServices-RDP-7-Advanced-Compression-Allowed | RDP 高级压缩,省带宽但拖慢画质 | 1(开启) |
按 build 号段的SingleUserPatch/Offset/Code | 单用户锁补丁的偏移与字节码 | 见 res/rdpwrap.ini |
性能方向只给一条建议:走公网低带宽链路时保持高级压缩开启;纯局域网使用建议关掉,把画质和延迟优先。安全方向在暴露公网前过一遍:改掉默认 3389 端口并同步更新防火墙规则、启用网络级身份验证(NLA)、给所有可远程登录的账户设强密码、防火墙入站只放行白名单 IP。
踩坑排查
检测显示 not supported 怎么办
症状:安装后检测报 not supported,远程连接建不起来。原因:Windows Update 更换了 termsrv.dll 的 build,当前 ini 里没有对应偏移段。解决:用最新版 rdpwrap.ini 替换 Program Files\RDP Wrapper\ 下的旧文件,然后:
net stop TermService net start TermService仍报错就拿本机 termsrv.dll 的 build 号查 technical.txt,未收录就在项目 issue 区提交。
TermService 报 1056 启动错误
症状:服务起不来,事件日志报 1056。原因:svchost 共享进程模式或杀毒软件拦截 rdpwrap.dll 加载。解决:让 TermService 独立成进程,并把 dll 加入杀毒白名单:
sc config TermService type= own本地能连但外网拒绝连接
症状:mstsc 连 127.0.0.1 正常,局域网外连不上。原因:防火墙缺入站规则,或目标账户不在 Remote Desktop Users 组。解决:补一条入站规则,同时到"本地用户和组"里确认账户组成员身份:
netsh advfirewall firewall add rule name="Remote Desktop" dir=in protocol=tcp localport=3389 action=allowRDP Wrapper 的本质是在服务控制管理器与终端服务之间加一层挂钩库,让 Windows 家庭版/Basic 版在不改系统文件的前提下跑多用户 RDP;适用边界是 Windows Vista 及以上,且每次系统大更新后都要确认 termsrv.dll 的 build 号仍在支持列表内。想深入实现看 src-x86-x64-Fusix/ 的 C++ 源码,想改配置工具的逻辑看 src-rdpconfig/。
本项目适合学习与测试场景;用于生产环境前请自行评估许可合规性与安全风险。
【免费下载链接】rdpwrapRDP Wrapper Library项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考