管理员代理模型

在管理员代理模型中,应用程序分为两个程序。 其中一个程序以标准用户身份运行,另一个程序以管理员权限运行。

使用应用程序清单,使用 asInvokerrequestedExecutionLevel 标记标准用户程序,并使用 requireAdministratorrequestedExecutionLevel 标记管理程序。 用户首先启动标准用户程序。 当用户尝试执行需要完全管理员访问令牌的操作时,标准用户程序会调用 ShellExecute 函数来启动管理程序。 ShellExecute 函数在使用用户的完全管理员访问令牌运行应用程序之前,会提示用户进行批准。 然后,管理程序可以执行需要管理员权限的任务。

管理程序不是与标准用户程序完全隔离的。 管理程序可以启用与标准用户程序的进程间通信。 但是,此类通信受默认强制完整性策略的限制。 有关强制完整性注意事项的信息,请参阅 将应用程序设计为在低完整性级别运行

管理员代理模型的可能用途如下:

  • 开发向导。 当硬件向导确定计算机上未安装所需的驱动程序或位于企业的批准位置时,它会调用提升的应用程序,并能够将驱动程序移动到计算机存储中。
  • Autorun.exe调用Setup.exe。 当用户从 CD 运行软件时,Autorun.exe(以标准用户身份运行)将启动Setup.exe(以管理员身份运行)将软件安装到计算机上。

下面是使用管理员代理模型的缺点:

  • 从应用程序到应用程序的转换可能会让用户感到困惑。 可能很难告知用户为何在监视器上显示新应用程序。
  • 在两个应用程序之间传递状态信息可能很困难。 例如,你不会使用此模型在标准用户控制面板 (CPL) 与其管理员之间传递状态信息,只是为了允许同一 CPL 具有管理和标准用户功能。 标准用户 CPL 必须将其状态存储在某个位置。
  • 在两个程序之间拆分功能时,可能会有很多复制的代码。

开发需要管理员权限的应用程序

管理员 COM 对象模型

操作系统服务模型

提升的任务模型