Windows Server 断开远程桌面 RDP 后保持桌面活跃
当我们需要在云端 Windows Server 上使用脚本,而通过 RDP 远程连接桌面的时候,没有正确配置可能导致 pywinauto 提示 “There is no active desktop required for moving cursors”
原因查找
错误原因很简单:没有外界显示器的云端在断开原生远程桌面 RDP 后,桌面就会自动休眠锁定,这时候 Windows Server 是没有 GUI 界面的,涉及到 GUI 的自动化测试也无法继续(导致所有与窗口自动化相关的工具没有办法获取到窗口句柄),因此我们需要断开远程连接但不锁定 Windows Server 。
解决办法无非有这几种:
● 安装模拟显示器驱动,假装接入了显示器,诱骗系统不进入桌面休眠状态。
不过找了一圈,好用的诱骗驱动都挂在淘宝上卖起来了,离谱离谱!
● 使用 VNC Server 或 TeamViewer 等其他远控方式。
这是我本来的方案,稳定工作了大半年,但某次我使用远程桌面连接并断开过后,VNC的方法就不再管用了,实在让人摸不着头脑唔。再说了,VNC Server 是收费软件,大费周折找盗版好像也不算很好的解决方法。
好在翻了一圈后有了新的解决方法(来自 Smartbear):如果通过 %windir%\System32\tscon.exe RDP-Tcp#*NNN* /dest:console
手动断开 RDP 的话,原桌面也不会休眠,其中 NNN 是当前远程桌面的 session
可用下面一段脚本自动完成:
1 | for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do ( |
另存为 bat 文件,每次断开 RDP 时不要关闭 RDP 客户端,而通过右键→以管理员身份运行来手动断开 RDP
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 鸭鸭梨!
评论