RDP Wrapper 完整教程:替换 rdpwrap.ini 让 Windows 支持多会话远程桌面
【免费下载链接】rdpwrap.iniRDPWrap.ini for RDP Wrapper Library by Stas'M项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini
rdpwrap.ini 仓库为 RDP Wrapper Library 提供配置文件。Windows 桌面版的 RDP 默认只保留一个活动会话,而 RDP Wrapper 依据这份文件在 termsrv.dll 中定位策略检查点并写入改写码,让系统按"允许多会话"的策略运行。仓库由两部分组成:汇总所有已支持 build 的主文件 rdpwrap.ini(2 万余行),以及按单个 build 拆分的 autogenerated/ 目录(399 个独立文件)。下面按"定位 build → 替换文件 → 重启服务 → 日志验证"的最短路径展开,每一步都给出可核对的依据。
确认本机 build 号已列入支持列表
运行winver查看当前 build 号(例如 22621),完整编号形如 10.0.22621.4974。拿到编号后直接在仓库内搜索同名段落:主文件把全部 build 汇总在一起,从 6.0.6000.16386 一直排到 10.0.29639.1000,若[10.0.22621.4974]这样的段落存在,说明该 build 已有适配。Readme 的 History 列表记录了每次新增,最近一条为 03.10.2026,收录了 10.0.17763.9245、10.0.20348.5622 和 10.0.28000.2952 三个 build。
文件名与系统版本的对应
autogenerated 目录的命名规则是<build 号>-autogenerated_<架构>.ini:_x64与_x86分别指向 64 位和 32 位系统;不带后缀的文件只含单一架构的条目,例如10.0.20348.261-autogenerated.ini内只有 x64 项。版本号前缀同样能定位系统:6.1.7601 系列对应 Windows 7,6.2.9200/6.3.9600 对应 Windows 8/8.1,10.0.10240 至 10.0.19041 覆盖 Windows 10,10.0.22000 起为 Windows 11,20348 分支对应 Windows Server 2022(Readme 中多处直接标注 "Server 2022")。
获取配置并整体替换到安装目录
前提是本机已装好 RDP Wrapper Library(原始项目由 stascorp 创建,本仓库只存放它的配置文件,不含程序本体)。获取最新配置只需一条命令:
git clone https://gitcode.com/GitHub_Trending/rdpwrap.ini随后有两条取件路径。其一,直接取仓库根目录的rdpwrap.ini——它包含全部 build 段落,[Main] 段的Updated=2026-10-03标明该汇总文件的更新日期;其二,取 autogenerated 目录中与本机 build 同名的单文件,例如10.0.22621.4974-autogenerated_x64.ini,其内容为公共段([Main]/[SLPolicy]/[PatchCodes])+ 该 build 的偏移段,核对范围更小。
把所选文件整体覆盖到 RDP Wrapper 安装目录下的rdpwrap.ini,而不是把新段落粘进旧文件。Readme 专门提示:较新的 termsrv.dll 依赖新的 patchcode,只补一个版本段而 [PatchCodes] 仍是旧版时,即使段落看似正确也会失败。
解读四个配置段与 build 的对应关系
主文件自上而下分为固定段与 build 段。[Main] 记录更新日期、日志路径(见下文LogFile=\rdpwrap.txt)和两个钩子开关;[SLPolicy] 存放交给系统的策略值:
[SLPolicy] TerminalServices-RemoteConnectionManager-AllowRemoteConnections=1 TerminalServices-RemoteConnectionManager-AllowMultipleSessions=1 TerminalServices-RemoteConnectionManager-MaxUserSessions=0MaxUserSessions=0表示会话上限不封顶,AllowMultipleSessions=1打开多会话;同段还包含LocalOnly=0(允许来自网络地址的连接)以及 TSEasyPrint、PnP 等设备重定向的许可开关。[PatchCodes] 则是改写所用字节码的取值表,如nop=90、jmpshort=EB。每个 build 段引用这些名字来定位并改写 termsrv.dll:
[10.0.22621.4974] SingleUserPatch.x64=1 SingleUserOffset.x64=C893 SingleUserCode.x64=mov_eax_1_nop_2SingleUserPatch声明启用单会话限制补丁,SingleUserOffset是 termsrv.dll 内以十六进制表示的偏移,SingleUserCode是要写入的字节码;DefPolicy*三件套同理,负责改写默认策略查询。较新的 build 段还会额外附带<build 号>-SLInit段,把bServerSku、lMaxUserSessions等策略字段逐一映射到内存偏移——这正是 autogenerated 文件可以按 build 批量生成的原因。
| 配置段 | 职责 | 示例条目 |
|---|---|---|
[Main] | 更新日期、日志路径、钩子开关 | LogFile=\rdpwrap.txt |
[SLPolicy] | 交给系统的会话与设备策略 | TerminalServices-RemoteConnectionManager-MaxUserSessions=0 |
[PatchCodes] | 改写字节码的取值表 | nop=90 |
[10.0.22621.4974] | 该 build 的偏移与补丁方式 | SingleUserOffset.x64=C893 |
[10.0.22621.4974-SLInit] | 策略字段的内存偏移表 | lMaxUserSessions.x64=132FB0 |
各段的分工说明了一切:偏移随 build 漂移,字节码表随 build 演进,策略值全局唯一。"配置项 × 系统版本"的对应关系决定了维护方式——一次新版本适配 = 新偏移段 + 可能的新 patchcode,这也解释了前文为何要求整文件替换。
重启 TermService 并用 rdpwrap.txt 验证
替换完成后,以管理员身份打开命令行重启远程桌面服务:
net stop TermService net start TermService服务重新读取配置时,过程会写入 [Main] 段指定的LogFile=\rdpwrap.txt(系统盘根目录下的 rdpwrap.txt)。打开该文件核对补丁是否针对当前 build 应用成功,再用另一台设备发起第二条 RDP 连接,确认两个会话可以并存。
不生效时的排查顺序
- 在所用文件中搜索
[<本机 build>]段是否存在,架构后缀(x64/x86)与系统是否一致; - 确认做的是整文件覆盖,对照 [PatchCodes] 与仓库最新版是否一致;
- 确认 TermService 已重启;
- 逐行读取
rdpwrap.txt,定位具体报错。
重新同步 Windows 更新后的配置
Windows 更新会替换 termsrv.dll,偏移随之漂移,旧配置大概率失效。恢复流程:先查 Readme 的 History 是否已收录新 build——维护者 sebaxakerhtc 自 build 18362.836 起持续跟进,History 条目非常密集;若已收录,在本地克隆目录执行git pull,再按"获取配置"一节整体替换并重启服务。
不要手动往旧文件里追加新段:缺少配套 patchcode 时,追加的版本段本身无法生效。若 History 尚无新 build,保持现有配置等待下一次仓库更新即可,Readme 是唯一进度来源。
接下来可做的事:盯住 Readme 的 History 列表,Windows 每次更新后重复"替换整文件 → 重启 TermService → 查看 rdpwrap.txt"这套流程。
【免费下载链接】rdpwrap.iniRDPWrap.ini for RDP Wrapper Library by Stas'M项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考