辅助技术的安全注意事项
辅助技术是在 Windows 桌面上运行的应用程序,可帮助辅助功能用户与计算机上运行的操作系统和其他应用程序进行交互,包括新 Windows UI 中的应用程序。 辅助技术应用程序的工作原理是从操作系统和其他应用程序检索信息,然后以可供用户访问的方式呈现信息。 辅助技术应用程序还可以根据用户的输入以编程方式“驱动”操作系统和其他应用程序。
辅助技术应用程序的性质要求它们跨越进程边界,并且有权访问以更高的完整性级别 (IL) 运行的进程。 (辅助技术应用程序在中等 IL 下运行。)例如,当用户尝试执行需要管理权限的任务时,Windows 会显示一个对话框,请求用户同意继续。 此对话框以较高的 IL 运行,因此恶意软件不能模拟用户输入。 同样,桌面登录屏幕在更高的 IL 上运行,以防止其他进程访问。
辅助技术应用程序通常需要访问受保护的系统 UI 元素,或者访问可能在更高权限级别运行的其他进程。 因此,辅助技术应用程序必须得到系统信任并且必须使用特殊特权运行。
若要访问更高的 IL 进程,辅助技术应用程序必须在应用程序的清单中设置 UIAccess 标志,并由具有管理员权限的用户启动。
注意
访问权限受到限制,如下所示:
- 清单中没有 UIAccess 的应用程序以中等 IL 开头,并且无法访问提升的 (“medium+” IL) 进程 UI。
- 如果应用程序的清单中包含 UIAccess,并且由不在管理员组中的用户启动,那么该应用程序将以“中+”IL 启动,并且无法访问高级用户界面(不能以“高”IL 运行,例如通过右键单击->以管理员身份运行启动的应用程序)。
- 应用程序具有 UI 访问权限,由管理员用户启动为“高”IL,并且可以访问提升的 UI,因为它具有相同的 IL。
UIAccess 不足以使进程通过 IL 边界向上移动。
除了有权访问更高 IL 进程之外,具有这些权限的辅助技术应用程序可以随时作为 z 顺序中最顶层的应用程序运行,这意味着只要用户需要辅助技术应用程序,辅助技术应用程序就可以可见且可用。
重要
上述任何方案都无法访问在系统 IL 下运行的 UI。 仅当进程在 SYSTEM(和系统 IL)下的用户帐户控制 (UAC) 桌面中启动时,才能执行此操作。 在这种情况下,设置 UIAccess 不起作用。
辅助技术应用程序的 UIAccess 要求
辅助技术应用程序是一个 Windows 桌面应用程序,它与桌面上运行的其他进程和新的 Windows UI 中进行交互,以从系统和应用程序获取信息。 然后,辅助技术应用程序可以向辅助功能用户提供信息。
辅助技术应用程序通过在应用程序清单中设置 UIAccess 标志来访问其他进程。 若要使用 UIAccess 标志,辅助技术应用程序必须满足以下要求。
- 需要显示、与其他应用程序交互或反映来自其他应用程序的信息,以便提供辅助功能方案的信息和/或
- 需要作为最顶层窗口运行才能获取或显示此信息。
若要使用 UIAccess,辅助技术应用程序需要:
- 使用证书进行签名,以便与在更高特权级别运行的应用程序进行交互。
- 由系统信任。 应用程序必须安装在需要用户帐户控制 (UAC) 提示进行访问的安全位置。 例如,“Program Files”文件夹。
- 使用包含 uiAccess 标志的清单文件生成。
不应使用 UIAccess:
使用非辅助技术的应用程序。
通过辅助技术应用程序来显示与它们所面向的辅助功能方案无关的信息或 UI。
在新的 Windows UI 中,应用程序只需显示在其他应用程序的上方即可。
注意
UWP 应用程序没有 UIAccess 作为可用选项。
在应用程序清单文件中设置 UIAccess
要想获取对受保护系统 UI 的访问权限,必须使用包含特殊属性的清单文件生成应用程序。 此 uiAccess 属性包含在 requestedExecutionLevel 标记中,如以下代码示例所示。
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="highestAvailable"
uiAccess="true" />
</requestedPrivileges>
</security>
</trustInfo>
此代码中的 level 属性值只是一个示例。
默认情况下,UIAccess 为“false”。 如果省略该属性,或者没有清单,则应用程序无法访问受保护的 UI。
有关 Windows 安全性、签名应用程序以及创建清单的详细信息,请参阅 Windows Vista 和 Windows Server 2008 开发人员故事:用户帐户控制 Windows Vista 应用程序开发要求 (UAC)。
相关主题