注释
本文档适用于想要使用 System.Windows.Automation 命名空间中定义的托管 UI 自动化类的 .NET Framework 开发人员。 有关 UI 自动化的最新信息,请参阅 Windows 自动化 API:UI 自动化。
本概述介绍 Windows Vista 中Microsoft UI 自动化的安全模型。
用户帐户控制
安全性是 Windows Vista 的主要焦点,在创新中,用户可以以标准(非管理员)用户身份运行,而无需阻止运行需要更高权限的应用程序和服务。
在 Windows Vista 中,大多数应用程序都提供标准令牌或管理令牌。 如果应用程序无法标识为管理应用程序,则默认情况下会将其作为标准应用程序启动。 在启动标识为管理员的应用程序之前,Windows Vista 会提示用户同意以管理员权限运行该应用程序。 默认情况下会显示同意提示,即使用户是本地管理员组的成员,因为管理员作为标准用户运行,直到需要管理凭据的应用程序或系统组件请求运行权限才能运行。
需要更高权限的任务
当用户尝试执行需要管理权限的任务时,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 的访问权限。