由于业务需要(其实是个人需要),写了一个小脚本用于操作WinForm程序全自动查询数据,获取并传回后端。但毕竟是个人需要,所以没有公司层面的设备支持,这套自动化程序只能跑在我自己工位的电脑上。
搞过桌面自动化的朋友都知道,操作WinForm程序时,WinForm窗口需要获取焦点,不像从网页获取数据,只需要Selenium驱动msedgedriver.exe在后台岁月静好。
于是过去很长一段时间,我的工作方式就是:正常工作一段时间 – 突然被自动查询脚本打断 – idle或与脚本抢电脑用(全自动查询时是心高气傲,跟脚本抢电脑是生似难料)。
于是在深度思考(并与Google Gemini彻夜长谈)后,一个堪称完美的解决方案出现了:使用RDPWrap突破Windows的单会话限制,让一台电脑可以供多人(或人机)同时使用,实现一个“它查它的,我用我的”的异步执行的效果。
RDPWrap是什么?
Win10默认存在“单会话限制”:只要有远程桌面(RDP)连进去,物理显示器就会被强制锁屏。
RDPWrap是一个开源项目,其作用是在不破坏系统原文件的前提下,通过内存注入劫持远程桌面服务(termservice),强行解除并发限制。说白了,它能让你在一台电脑上无缝开出几个互不干扰的“影子桌面”。
食用教程
首先,我们先创建一个用户用于在后台运行自动化服务。打开Windows PowerShell (管理员),逐行执行以下代码:
net user Autorun_Account Password123456 /add
net localgroup "Remote Desktop Users" Autorun_Account /add
net localgroup Administrators Autorun_Account /add # 可选, 为该用户赋管理员权限来到GitHub Releases页面,下载这个RDPWrap-v1.6.2.zip
下载好后解压到合适的位置(为方便编写教程,文中默认解压位置为D:\RDPWrap),双击install.bat进行安装
安装过程中会自动获取一个配置文件(应该是rdpwrap.ini),但这个自动获取的配置文件相对而言版本较老,我们需要对这个配置文件进行替换来兼容最新版本的Windows 10。
安装完成后,打开C:\Program Files\RDP Wrapper,使用记事本或VSCode打开rdpwrap.ini,将里面的内容全部删掉,替换成下面这个链接的版本:
https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini为了防止上面链接失效,我保存了一份配置文件(RDPWrap-v1.6.2.zip也保存了,这一组在最新版Windows 10专业版上测试通过,打不开GitHub的朋友也可以直接使用这一组):点击前往下载
替换完成后重启电脑,回到D:\RDPWrap,双击打开RDPConf.exe,此时各状态应为绿色,如图所示:

此时就可以Win + R,执行mstsc,远程连接127.0.0.2自己远程自己了。
注意!一定是127.0.0.2而不是localhost或者127.0.0.1,不然依然会弹出报错:”你的计算机无法连接到同一计算机上的另一个控制台会话,因为你已经有一个正在进行的控制台会话。“
不过,为了能够不间断地在后台运行自动化服务,建议在主机上打开Windows PowerShell (管理员),执行:
reg add "HKCU\Software\Microsoft\Terminal Server Client" /v RemoteDesktop_SuppressWhenMinimized /t REG_DWORD /d 2 /f它能保证即使RDP窗口最小化,后台依然在默默渲染远程桌面的画面。
至此,我们便以几乎为零的性能开销,完美实现了“人机并行操作”的自由。这套方案既避开了虚拟机吃内存的硬伤,又不需要在局促的工位上强行多塞一台物理机,主打一个优雅且实用。
本文地址: 零成本双开:为了不让自动化脚本抢鼠标,我给Win10开了个“小黑屋”