You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在断开远程连接的Azure Windows VM中正常运行PyAutoGUI自动化脚本

解决Azure Windows 10虚拟机断开远程桌面后PyAutoGUI无法正常运行的方案

问题根本原因

Windows远程桌面(RDP)连接断开后,系统会默认销毁当前登录用户的活动图形会话,PyAutoGUI依赖活跃的图形桌面会话、可访问的显示上下文、键鼠模拟权限运行,会话销毁后会出现显示分辨率丢失、鼠标坐标异常漂移到屏幕角落的问题,进而触发PyAutoGUI的fail-safe报错,键鼠模拟操作也无法正常执行。


可用解决方案

方案1:使用tscon命令重定向会话(最简便,推荐优先尝试)

不要直接点击远程桌面右上角的叉号断开连接,改用命令将当前RDP会话重定向到本地控制台,断开连接后会话仍保持活跃,图形界面不会被销毁:

  1. 在Azure虚拟机内新建后缀为.bat的脚本文件,写入以下内容:
tscon %sessionname% /dest:console
  1. 启动PyAutoGUI脚本确认正常运行后,右键点击bat文件选择「以管理员身份运行」,系统会自动断开RDP连接,同时保持当前会话持续活跃。
  2. 提前关闭虚拟机的屏幕保护、自动锁屏、休眠功能:电源选项中设置「永不关闭显示器」「永不进入睡眠」,锁屏超时设置为「从不」。

方案2:修改本地组策略保留断开的会话

通过组策略配置禁止系统回收断开的RDP会话:

  • 按下Win+R输入gpedit.msc打开本地组策略编辑器
  • 定位到路径:计算机配置 > 管理模板 > Windows组件 > 远程桌面服务 > 远程桌面会话主机 > 会话时间限制
  • 双击「设置已断开连接的会话的时间限制」,选择「已禁用」后保存
  • 再定位到路径:计算机配置 > 管理模板 > Windows组件 > 远程桌面服务 > 远程桌面会话主机 > 安全
  • 双击「远程(RDP)连接要求使用指定的安全层」,选择「已启用」,安全层下拉选择「RDP」,保存后重启虚拟机生效。

方案3:安装虚拟显示驱动(适配无物理显示器的云虚拟机场景)

云虚拟机默认没有接物理显示器,断开RDP后显示上下文会丢失,可安装虚拟显示驱动模拟永久在线的显示器:

  • 安装开源虚拟显示器驱动IddSampleDriver,配置固定的显示分辨率(如1920*1080)
  • 配置完成后系统会一直认为有显示器接入,断开RDP后显示分辨率、坐标体系不会发生变化,PyAutoGUI可正常运行。

PyAutoGUI脚本配置调整

  • 你之前设置pg.FAILSAFE = True是默认配置,触发报错是因为鼠标坐标漂移到了屏幕角落,在确认会话稳定的前提下可在脚本开头添加配置避免异常报错:
import pyautogui as pg
# 关闭fail-safe机制(确认脚本坐标逻辑无问题后再开启)
pg.FAILSAFE = False
# 清空fail-safe触发坐标点
pg.FAILSAFE_POINTS = []
# 给操作添加默认间隔,避免执行过快无响应
pg.PAUSE = 0.5
  • 模拟操作可额外添加间隔参数,比如pg.hotkey('alt', 'tab', interval=0.3),提升操作成功率。

内容的提问来源于stack exchange,提问作者yuu Iri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:57:03