本文提供有关解决由用户界面隐私隔离(UIPI)引起的问题的指南,这是 Windows 中的安全功能,该功能可能会阻止 UI 或浏览器自动化作成功执行。 UIPI 会阻止在不同完整性级别运行的进程之间的某些交互,这可能会干扰自动化工具或脚本。 由于这些问题可能由于多个潜在原因而发生,因此我们建议查看列出的每个原因,以确保系统设置正确配置,以便成功实现自动化。
症状
执行 UI 或浏览器自动化的作可能会失败,并显示类似于以下错误消息:
System.Exception:某些模拟输入命令未成功发送。 发生这种情况的最常见原因是 Windows 的安全功能,包括用户界面隐私隔离(UIPI)。 应用程序只能将命令发送到权限级别相同或较低的应用程序。 同样,某些命令仅限于辅助功能/UIAutomation 应用程序。 有关详细信息,请参阅项目主页和代码示例。
原因 1:执行期间桌面被锁定
解决方案:解锁桌面以允许自动化过程继续。
原因 2:执行期间打开 UAC 对话框
解决方案:确保自动化期间不会显示用户帐户控制(UAC)对话框。 如有必要,请暂时调整 UAC 设置:
- 打开控制面板。
- 导航到 “系统和安全>更改用户帐户控制”设置。
- 将滑块暂时调整为较低的设置,以防止在自动化期间出现 UAC 中断。
- 完成自动化过程后还原原始设置。
原因 3:在执行过程中将 RDP 窗口最小化
解决方案:修改系统注册表以防止出现最小化的远程桌面协议 (RDP) 会话的问题。
重要
本部分、方法或任务包含说明如何修改注册表的步骤。 如果您错误地修改注册表,可能会出现严重问题。 因此,请确保仔细执行这些步骤。 出于防范目的,请在修改之前备份注册表,以便在出现问题时还原注册表。 有关如何备份和恢复注册表的更多信息,请参见如何在 Windows 中备份和恢复注册表。
关闭活动的远程桌面会话。
按 Win+R,键入 regedit,然后按 Enter 打开注册表编辑器。
导航到以下键:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Terminal Server Client
在右侧面板中右键单击,然后选择 “新建>DWORD”(32 位)值。
RemoteDesktop_SuppressWhenMinimized命名新的注册表项。
双击该条目以打开 “编辑 DWORD”(32 位)“值 ”窗口。
将 “值数据 ”字段设置为 2。
选择 “确定” 以保存更改并关闭注册表编辑器。
原因 4:正在自动执行的应用程序在提升模式下运行
解决方案:确保自动执行的应用程序未使用提升的权限运行。 如果应用程序设置为以管理员身份运行,请调整其执行设置:
- 右键单击应用程序快捷方式,然后选择“ 属性”。
- 转到 “兼容性 ”选项卡。
- 清除 “以管理员身份运行此程序 ”选项。
- 选择“确定”以保存更改。
原因 5:已启用桌面屏幕保护程序
解决方案:禁用屏幕保护程序以防止在自动化期间中断:
- 打开控制面板。
- 导航到 外观和个性化>更改屏幕保护程序。
- 将 “屏幕保护程序 ”选项设置为 “无”。
- 选择应用>,确定。
原因 6:Windows Server 管理器在登录时自动启动,触发 UAC
解决方案:禁用服务器管理器的自动启动功能以防止 UAC 提示:
- 打开服务器管理器。
- 转到 “管理>服务器管理器属性”。
- 选中“ 不要在登录时自动启动服务器管理器 ”复选框。
- 选择“确定”以保存更改。
原因 7:Windows 更新或系统配置更改
解决方案:查看最近的 Windows 更新或系统更改,并在必要时恢复它们以解决问题。