UI 自动化安全性概述

更新:2007 年 11 月

本概述描述 Windows Vista 中的 Microsoft UI 自动化安全模型。

本主题包括下列各节。

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

用户帐户控制

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

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

需要更高特权的任务

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

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

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

清单文件

若要访问受保护的系统 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”(最小特权环境中应用程序开发人员的最佳做法和准则)。