尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

一个免费库如何让 Windows 家庭版支持远程桌面与 15 路并发连接

一个免费库如何让 Windows 家庭版支持远程桌面与 15 路并发连接 一个免费库如何让 Windows 家庭版支持远程桌面与 15 路并发连接【免费下载链接】rdpwrapRDP Wrapper Library项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap周五晚上 10 点半,你在返程高铁上,明天要交的文档还躺在家里那台电脑里。你熟练地打开「远程桌面连接」,输入 IP 和账号,屏幕却弹出一行冷冰冰的提示:此电脑未启用远程桌面。原因很简单——你的系统是家庭版,微软在这个版本里直接砍掉了远程桌面主机功能。RDP Wrapper 正是为解决这类问题而生的开源库:它让受限版本的系统也能充当远程桌面主机,甚至支持最多 15 路并发连接,而且不需要动系统里任何原始文件。它能帮你:在不换系统、不买新许可的前提下,把一台家用 Windows 变成可多人远程登录的工作站,全程免费。先说结论:这是不是又一个改系统文件的危险操作?不是。很多同类工具的做法是直接修改termsrv.dll,风险很高:Windows Update 一更新就把补丁冲掉,严重时还会导致终端服务崩溃。RDP Wrapper 选择了另一条路——它作为一个中间层,夹在「服务控制管理器」和「终端服务」之间:系统启动时加载的是rdpwrap.dll,由它再去加载真实的termsrv.dll,并在运行时悄悄调整策略函数的返回值。原始文件始终保持原样,这也是它对系统更新更抗造的原因。源码里可以看到它 hook 的目标函数,比如CDefPolicy::Query、CSessionArbitrationHelper::IsSingleSessionPerUserEnabled,正是这些函数决定了你算不算服务器版。最短路径:三步从下载到跑通不用研究文档,照着下面走就能完成一次最小验证。第一步:拿到代码和编译产物git clone https://gitcode.com/gh_mirrors/rd/rdpwrap如果只想要现成的二进制,直接下载 release 包即可,里面包含rdpwrap.dll、rdpwrap.ini和三个小工具。第二步:以管理员身份运行安装脚本把压缩包解压后,右键install.bat,选择「以管理员身份运行」。脚本会依次完成:把rdpwrap.dll复制到 Program Files、把注册表里TermService的ServiceDll指到它、开放防火墙 3389 端口、然后启动终端服务。整个过程有明确输出,出错会当场提示。安装器默认走在线模式,会自动拉取最新版的rdpwrap.ini;如果是内网机器,把install.bat里的-o参数去掉即可离线安装,本地配置文件会直接生效。第三步:验证运行RDPCheck.exe,它会向127.0.0.2发起一次本地回环连接测试。看到连接成功,说明远程桌面已经可用,现在你可以用系统自带的mstsc.exe正常连接了。幕后:它凭什么认识每一版 Windows?这是这个项目最巧妙的地方,答案藏在一个配置文件里:res/rdpwrap.ini。微软每个版本、每个补丁都会生成新的termsrv.dll,偏移量各不相同。RDP Wrapper 的做法是把补丁模板和每个版本的偏移量全部抽到 INI 里,运行时先读取当前termsrv.dll的版本号,再查表套用对应配置。打开文件能看到这样的段落:[Main] SLPolicyHookNT601 SLPolicyHookNT611 [SLPolicy] TerminalServices-RemoteConnectionManager-AllowRemoteConnections1 TerminalServices-RemoteConnectionManager-AllowMultipleSessions1 TerminalServices-RemoteConnectionManager-AllowAppServerMode1 [PatchCodes] nop90 CDefPolicy_Query_edx_ecxBA000100008991200300005E90 [6.1.7600.16385] ; Windows 7 正式版 SingleUserPatch.x861 SingleUserOffset.x8619E25 SingleUserCode.x86nop DefPolicyPatch.x861 DefPolicyOffset.x86196F3 DefPolicyCode.x86CDefPolicy_Query_eax_esi[Main]是总开关,[SLPolicy]定义了要让系统以为的策略默认值(允许多会话、允许远程连接等),[PatchCodes]是通用补丁代码模板,而每个[版本号]段落则记录该版本各自的偏移位置。这就是为什么从 1.5 版本之后,rdpwrap.dll本身几乎不再更新——新增系统支持只需要往 INI 里加一段配置,完全不用重新编译。这份 INI 目前累计收录了几百个termsrv.dll版本的条目,从 Vista 一路覆盖到 Windows 10;带注释的说明版在res/rdpwrap-ini-kb.txt,ARM 平台的实验性代码则在res/rdpwrap-arm-kb.ini。三个随身工具:各管一摊事release 包里附带三个小工具,分工很清晰:工具职责适用时机RDPConf.exe图形化配置与诊断,源码在src-rdpconfig/日常查看状态、调参数RDPWInst.exe安装、卸载、更新 INI,源码在src-installer/装完/卸载/升级配置时RDPCheck.exe本地回环连接测试,源码在src-rdpcheck/怀疑连不上时快速自检其中RDPConf.exe是最值得熟悉的一个。打开后第一屏是三行状态:Wrapper(补丁层是否就位)、Listener(监听器是否在听 3389)、Service(终端服务是否运行)。九成的问题都能从这三行一眼定位。往下是常用配置项:RDP 端口:默认 3389,改端口后会自动同步更新防火墙规则;NLA:网络级别认证开关,公网场景强烈建议开启;单会话限制:控制同一个用户能否同时本地远程登录,多人共用一台机器时常用;影子会话(Shadowing):允许管理员观看或接管其他会话,教学和排障场景很实用;隐藏用户列表:登录界面不显示某些账户,适合暴露在公网的机器;自定义启动程序:远程登录后自动运行指定程序。RDPCheck.exe功能刻意做得极简,只做一件事:验证 RDP 通不通。想调分辨率、调色彩深度,还是老老实实用mstsc.exe。最容易踩的 5 个坑(如果你遇到……就……)1. 配置工具显示[not supported]说明 INI 里没有当前termsrv.dll的条目。如果你能联网,就运行update.bat拉取最新 INI;如果更新后依旧不支持,大概率是你的版本太新,社区还没跟进,去 Issues 里搜一下你的termsrv.dll版本号,没有就带上版本号提一个新 issue。2. 杀毒软件把rdpwrap.dll当病毒删了AVG、Norton 等杀软确实会误报。先把rdpwrap.dll加入白名单;如果终端服务启动时卡死,可以尝试把 TermService 从共享进程里隔离出来:sc config TermService type own3. Windows 10 家庭版更新后 Listener 显示[not listening]Creators Update 之后的家庭版缺少rfxvmt.dll,导致监听器起不来。新版安装器已内置恢复该文件的选项,升级安装器即可。4. 远程桌面服务更新后不启动,或报 Access Denied先确认你的termsrv.dll是原版——如果以前用其他工具改过,先恢复原版再装 RDP Wrapper,否则容易在登录瞬间崩溃。之后重启 TermService 或重启系统,通常能恢复。5. 在 Windows 10 上不小心把自己锁在门外这版系统存在一个已知问题:远程会话可能意外把本地会话顶掉。建议本地账户设置强密码、保留至少一个其他可用的登录入口(比如另一台能远程进来的机器),再放心折腾。进阶:给想更上一层楼的人无人值守部署:RDPWInst.exe支持命令行参数,配合 MSI 安装包(仓库里有res/RDPWInst.wxs和res/build_wxs.bat)可以塞进企业批量部署流程;同一个用户两边同时登录:在 RDPConf 里关闭单会话限制即可,测试过在 Windows 7/8/10 上都成立;多显示器:RDP 主机支持完整的多屏远程会话,远程办公体验接近本地;自己编译:源码很完整。Delphi 版在src-x86-binarymaster/,用 RAD Studio 2010 打开工程即可;C 版在src-x86-x64-Fusix/,用 Visual Studio 2013 打开RDPWrap.sln,x86/x64 都能出;两版都附带了自定义 INI 解析器(LiteINI.pas和IniFile.cpp),代码量不大,适合当逆向工程的入门读物;深度资料:technical.txt里有一份非常完整的termsrv.dll版本支持清单,标注了每个版本是仅策略 hook还是含扩展补丁,想研究版本演进可以直接看它。这个项目是怎么长起来的RDP Wrapper 最初由 StasM 发布,灵感来自 Windows Product Policy Editor 的思路;后来 Fusix 完成了 C 移植,补上了 x64 支持;再后来陆续有社区成员贡献了各种新版本的偏移量,包括 Windows RT(ARM)的实验性支持。项目的发展节奏很清楚:dll 保持稳定,配置持续生长——几乎每一版新 Windows 发布后,都会在res/rdpwrap.ini里看到新增的条目。想参与的话,门槛并不高:发现新termsrv.dll版本不被支持时,带上版本号反馈给维护者,或者干脆自己逆向出偏移量提交上去,这正是这个项目最需要的贡献。需要提醒的是:它不支持 Windows 2000/XP/Server 2003(太老,没有适配价值);另外请把它用在你自己拥有或有权管理的设备上,并遵守当地法律法规。一句话开始行动如果你手头恰好有一台吃灰的家庭版 Windows,不妨今晚就 clone 下来,三步跑通,然后试着从手机或另一台电脑连进去——你会发现,那个被微软藏起来的远程桌面,其实离你只有一次右键的距离。【免费下载链接】rdpwrapRDP Wrapper Library项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表