将 Windows Installer 与 UAC 结合使用
Windows Installer 符合 Windows Vista 中的用户帐户控制 (UAC)。 通过管理员的授权,Windows Installer 可以可能不是管理员组成员的用户身份安装应用程序或补丁。 这称为提升的安装,因为通常不允许用户直接进行更改,Windows Installer 以用户身份对系统进行更改。
- 在企业环境中使用 Windows Vista 时,可以将应用程序指定为托管应用程序。 通过使用应用程序部署和组策略,管理员可以锁定目录,然后将这些目录中的托管应用程序分配或发布给标准用户,以进行安装、修复或删除。 托管应用程序是在 HKEY_LOCAL_MACHINE 注册表配置单元中注册的。 将应用程序注册为托管应用程序后,后续安装操作将始终以提升的权限运行。 如果用户以管理员身份运行,则无需任何提示即可继续安装。 如果用户以标准用户身份运行,并且应用程序已分配或发布,则无需任何提示即可继续安装托管应用程序。
- 在非企业环境中使用 Windows Vista 时,UAC 会处理应用程序安装的提升。 Windows Installer 4.0 可以调用应用程序信息服务 (AIS) 来请求管理员授权,以提升安装。 在运行标识为需要管理员权限的安装之前,UAC 会提示用户同意提升安装。 即使用户是本地管理员组的成员,也会在默认情况下显示许可提示,这是因为管理员以标准用户身份运行,直到需要管理凭据的应用程序或系统组件请求权限才能运行。 此用户体验被称为管理员批准模式 (AAM)。 如果标准用户尝试安装应用程序,则该用户必须让具有管理员权限的人向其提供管理员凭据才能继续安装。 此用户体验被称为即时权限提升 (OTS) 凭据提示。
- 由于 UAC 在安装阶段限制权限,Windows Installer 程序包的开发人员不应假定其安装始终有权访问系统的所有部分。 因此,Windows Installer 程序包开发人员应遵守程序包指南中所述的程序包指南,以确保其程序包适用于 UAC 和 Windows Vista。 为符合 UAC 而创作和测试的程序包应包含设置为 1 的 MSIDEPLOYMENTCOMPLIANT 属性。
- 管理员还可以使用为非管理员安装具有提升的权限的程序包部分中所述的方法,使非管理员用户能够安装具有提升的系统权限的应用程序。
- 在每用户管理的上下文中安装应用程序需要权限,因此后续的 Windows Installer 重新安装或修复应用程序也由安装程序使用提升的权限执行。 这意味着只有来自可靠来源的补丁才能应用到处于每用户管理状态的应用程序。 从 Windows Installer 3.0 开始,在补丁注册为具有提升的权限后,可以将补丁应用于每用户管理的应用程序。 有关信息,请参阅修补每用户管理的应用程序。
注意
如果不需要使用提升的权限来安装 Windows Installer 程序包,程序包的创建者可以取消 UAC 显示的用于提示用户进行管理员授权的对话框。 有关详细信息,请参阅在不使用 UAC 对话框的情况下创作程序包。