Windows 自动化点击失效,先查权限隔离
文章解释普通权限 Agent 操作管理员窗口时,可能被 Windows 的 UIPI 完整性级别隔离机制阻止。截图仍可见、点击工具返回成功而界面无响应,可能来自输入注入或窗口消息受到拦截。
AI 深度解读
Windows 桌面 Agent 能看见窗口,点击工具也返回成功,界面却毫无反应,问题可能出在进程权限上。作者指出,任务管理器、管理员终端、Registry Editor 等窗口背后,常见的拦路者是 Windows 的用户界面特权隔离(UIPI)。
这篇最有用的地方,是把「截图正常、元素为空、点击无效」串成了一条排查路径:先检查 Agent 与目标窗口的完整性级别,再决定是否调整权限。继续换模型、重试点击,往往解决不了这类问题。
为什么看得见窗口,却点不动
Windows 进程有完整性级别。普通进程通常运行在 Medium,即使登录账号属于 Administrators 组,UAC 也会过滤进程令牌中的管理员权限。通过「Run as administrator」启动的进程,则运行在 High。
UIPI 会限制低完整性进程操控高完整性进程。对桌面 Agent 来说,几条常见操作路径都可能被挡住:
- 通过
SendInput注入的模拟输入,无法正常送进更高完整性的窗口。作者援引 Microsoft 文档指出,返回值和GetLastError都不能告诉调用方,失败是否由 UIPI 引起。 - 通过
PostMessage/SendMessage发送的大多数窗口消息同样受限,因此改用消息模拟点击,也未必有效。 - UI Automation 的元素发现会受影响。原文描述的典型表现是,Medium 客户端读取提权应用的 UI 树时,拿到空元素列表。
截图却仍然可能正常。屏幕捕获和输入控制是不同的能力,所以 Agent 可以描述窗口内容,却无法操作它。
截图可见、工具返回成功,都不能证明操作已经生效。
作者还提到另一个开源 Agent 的公开问题报告:截图正常、发现 0 个元素、点击返回 ok: true,但界面不动;Agent 在 Medium,目标已提权。不过,所给原文没有附上报告链接,也没有提供复现环境,读者无法据此核查具体案例。
先查权限,再按需要选择修复方式
作者给出的检查很短。在启动 Agent 的终端或应用环境中执行下面的命令,用来查看当前进程上下文的完整性级别:
whoami /groups | findstr /i "Mandatory"
重点看输出中的 Medium Mandatory Level 或 High Mandatory Level。命令要在启动 Agent 的那一侧执行,另开一个管理员终端查询,不能代表原来的 Agent 已经提权。
目标窗口则从 Task Manager 的 Details 页检查:右键列标题,进入 Select columns,启用 Elevated 列。目标显示 Yes,而 Agent 在 Medium,就符合原文描述的权限不匹配。
修复顺序也有讲究。
首先,取消目标程序不必要的提权。常见来源是终端或 IDE 被配置成始终以管理员运行,可以检查 Properties > Compatibility,以及快捷方式的 Advanced 设置。目标恢复普通权限后,Agent 就不必跟着提升权限。
其次,确实需要管理员操作时,再用「Run as administrator」启动承载 Agent 的终端或 MCP 客户端,让相关进程运行在 High。代价很明确:Agent 执行的操作也会获得管理员权限,因此应限定在需要它的任务中。
如果是在交付桌面工具,还可以考虑 uiAccess="true"。原文说明,这需要应用使用受信任证书签名,并安装到 Program Files 等受保护位置,屏幕阅读器就采用这类机制。它不是给用户目录里的脚本加一个开关就能用的方案。
但上述办法都不能直接解决 UAC 确认框。那个询问是否允许应用修改设备的对话框位于安全桌面,普通进程无法查看或点击。按作者建议,Agent 到这里应暂停,由用户处理。
我的判断
这套排查顺序有说服力:先核对操作系统边界,再分析模型决策。权限不匹配时,优化提示词、切换视觉识别、增加点击次数,都没有触及故障原因;消息点击作为备用路径,也可能撞上同一道限制。
但它仍是一篇机制说明加经验排障文。作者没有给出不同 Windows 环境、不同自动化实现之间的对照测试,也没有提供各修复方案的成功率。因此,「优先检查提权」可以采纳,「所有看得见却点不动的问题都由 UIPI 引起」则不能推出。权限一致后仍失败,就需要继续检查工具实现和应用行为。
还要区分管理员窗口与 UAC 安全桌面。前者可以通过匹配权限级别解决部分控制问题,后者不能沿用同样的处理办法。
作者团队开发的 Auten 是面向 Claude Code、Codex、Cursor 等 MCP 客户端的屏幕操作服务,原文称其支持 Mac、Windows、Linux,以及处于 beta 的 Android。它在 Windows 上按用户安装,默认运行在 Medium,因此同样受此限制。这解释了作者为何关注这个问题,但产品介绍本身不能作为兼容性验证。
能拿来做什么
- 给 Windows 上的 AI 编程流程加入权限检查。如果 Agent 要操作 IDE、终端或安装器,先确认双方完整性级别,尤其检查 IDE 是否被长期设置为管理员运行。
- 在桌面自动化中增加操作后的状态验证。点击返回
ok: true后,继续检查界面是否变化;出现截图正常、元素为空、点击无效的组合时,优先提示检查提权状态。 - 将管理员任务单独执行。只有目标确实需要提权时,才为该任务提升 Agent 宿主权限;遇到 UAC 确认框时暂停,让用户完成确认。