Compartilhar via


Modelo do Agente de Administrador

No modelo de agente de administrador, o aplicativo é dividido em dois programas. Um dos programas é executado como um usuário padrão e o outro é executado com privilégio de administrador.

Usando um manifesto do aplicativo, marque o programa de usuário padrão com um requestedExecutionLevel de asInvoker e marque o programa administrativo com um requestedExecutionLevel de requireAdministrator. Primeiro, um usuário inicia o programa de usuário padrão. Quando o usuário tenta executar uma operação que requer um token de acesso de administrador completo, o programa de usuário padrão chama a função ShellExecute para iniciar o programa administrativo. A função ShellExecute solicita aprovação ao usuário antes de executar o aplicativo com o token de acesso completo do administrador do usuário. Em seguida, o programa administrativo pode executar tarefas que exigem privilégio de administrador.

O programa administrativo não está completamente isolado do programa de usuário padrão. O programa administrativo pode habilitar a comunicação entre processos com o programa de usuário padrão. No entanto, essa comunicação é limitada pela política de integridade obrigatória padrão. Para obter informações sobre considerações de integridade obrigatórias, consulte Projetando aplicativos para executar em um nível de integridade baixo.

Veja a seguir possíveis usos para o modelo de agente de administrador:

  • Desenvolvendo assistentes. Quando um assistente de hardware determina que um driver necessário não está instalado no computador ou localizado no local aprovado da empresa, ele chama um aplicativo elevado com a capacidade de mover um driver para o repositório de computadores.
  • Autorun.exe chamando Setup.exe. Quando um usuário executa software de um CD, Autorun.exe, que é executado como um usuário padrão, inicia Setup.exe, que é executado como administrador, para instalar o software no computador.

Veja a seguir as desvantagens de usar o modelo de agente de administrador:

  • As transições de aplicativo para aplicativo podem ser confusas para o usuário. Pode ser difícil informar ao usuário por que um novo aplicativo aparece no monitor.
  • Pode ser difícil passar informações de estado entre os dois aplicativos. Por exemplo, você não usaria esse modelo para passar informações de estado entre um CPL (painel de controle de usuário) padrão e seu equivalente de administrador simplesmente para permitir que a mesma CPL tenha funcionalidade administrativa e padrão do usuário. O CPL de usuário padrão teria que armazenar seu estado em algum lugar.
  • Pode haver muito código replicado ao dividir a funcionalidade entre dois programas.

Desenvolvendo aplicativos que exigem privilégio de administrador

Modelo de objeto COM do administrador

Modelo de serviço do sistema operacional

Modelo de tarefa com privilégios elevados