UI 自动化安全性概述

注意

本文档适用于想要使用 System.Windows.Automation 命名空间中定义的托管 UI 自动化类的 .NET Framework 开发人员。 有关 UI 自动化的最新信息,请参阅 Windows 自动化 API:UI 自动化

本概述内容介绍了 Windows Vista 中 Microsoft UI 自动化的安全模型。

用户帐户控制

安全性是 Windows Vista 的主要关注点,其中创新是指用户以标准用户(非管理员)身份运行的能力,无需阻止运行需要更高权限的应用程序和服务。

在 Windows Vista 中,大多数应用程序都提供有标准令牌或管理令牌。 如果无法将应用程序标识为管理应用程序,则默认情况下会作为标准应用程序启动。 用户必须同意 Windows Vista 提示的运行提升的应用程序才能启动标识为管理的应用程序。 即使用户是本地“Administrators”组的成员,也会在默认情况下显示同意提示,这是因为管理员以标准用户身份运行,直到需要管理凭据的应用程序或系统组件请求授予运行权限。

需要更高特权的任务

当用户尝试执行需要管理权限的任务时,Windows Vista 会显示一个对话框,询问用户是否同意继续。 此对话框受到跨进程通信保护,因此恶意软件不能模拟用户输入。 同样,其他进程通常无法访问桌面登录屏幕。

UI 自动化客户端必须与其他进程通信,其中某些进程可能正在以更高特权级别运行。 客户端还可能需要访问对其他进程通常不可视的系统对话框。 因此,UI 自动化客户端必须受到系统信任并且必须使用特殊权限运行。

要获得信任以便与以更高特权级别运行的应用程序通信,必须签名应用程序。

清单文件

要想获取对受保护系统 UI 的访问权限,必须使用 requestedExecutionLevel 标记中包含 uiAccess 属性的清单文件生成应用程序,如下所示:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
  <security>
    <requestedPrivileges>
      <requestedExecutionLevel
        level="highestAvailable"
        uiAccess="true" />
    </requestedPrivileges>
  </security>
</trustInfo>

此代码中的 level 属性值只是一个示例。

默认情况下,uiAccess 为“false”;即,如果省略该属性或如果没有程序集清单,应用程序将无法获取对受保护的 UI 的访问权限。