UI 自动化安全性概述

注意注意

本文档的目标读者是欲使用 System.Windows.Automation 命名空间中定义的托管 UI Automation类的 .NET Framework 开发人员。有关 UI Automation的最新信息,请参见 Windows Automation API: UI Automation(Windows 自动化 API:UI 自动化)。

本概述描述 Windows Vista 中的 Microsoft UI Automation安全模型。

本主题包括下列各节。

  • 用户帐户控制
  • 需要更高特权的任务
  • 清单文件

用户帐户控制

安全性是 Windows Vista 中的主要关注对象,这方面的革新之一是,用户能够以标准用户(非管理员)的身份运行那些需要较高特权的应用程序和服务,而不会受到阻止。

在 Windows Vista 中,大多数应用程序都附有一个标准标记或管理标记。 如果无法将某个应用程序标识为管理应用程序,则默认情况下它将作为标准应用程序启动。 在启动标识为管理应用程序的应用程序之前,Windows Vista 会提示用户是否同意以具有更高权限的身份运行应用程序。 默认情况下会显示此提示(即使用户是本地 Administrators 组的成员),原因在于,除非那些需要管理凭据的应用程序或系统组件要求以更高权限运行,否则管理员将以标准用户的身份运行。

需要更高特权的任务

如果用户尝试执行的任务需要管理特权,Windows Vista 将会显示一个对话框询问用户是否同意继续执行。 此对话框可防止进行跨进程通信,因此恶意软件不能模拟用户输入。 同样,其他进程一般无法访问桌面登录屏幕。

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

要与那些以更高特权级别运行的应用程序进行受信任的通信,必须对应用程序进行签名。

清单文件

若要访问受保护的系统 UI,应用程序必须是使用包括特殊特性的清单文件生成的。 该 uiAccess 特性包含在 requestedExecutionLevel 标记中,如下所示:

<trustInfo xmlns="urn:0073chemas-microsoft-com:asm.v3">

    <security>

        <requestedPrivileges>

        <requestedExecutionLevel

            level="highestAvailable"

            UIAccess="true" />

        </requestedPrivileges>

    </security>

</trustInfo>

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

UIAccess 的默认值为“false”;也就是说,如果省略该特性,或者该程序集没有清单,则应用程序将无法访问受保护的 UI。

有关 Windows Vista 安全性、对应用程序进行签名以及创建程序集清单的更多信息,请参见 MSDN 上的“Developer Best Practices and Guidelines for Applications in a Least Privileged Environment”(最小特权环境中应用程序开发人员的最佳做法和准则)。