Controle de Conta de Usuário

Observação

Este guia de design foi criado para Windows 7 e não foi atualizado para versões mais recentes do Windows. Grande parte das diretrizes ainda se aplica em princípio, mas a apresentação e os exemplos não refletem nossas diretrizes de design atuais.

Uma experiência bem projetada de Controle de Conta de Usuário ajuda a evitar alterações indesejadas em todo o sistema de uma forma previsível e requer esforço mínimo.

Com o UAC (Controle de Conta de Usuário) totalmente habilitado, os administradores interativos normalmente são executados com privilégios de usuário mínimos, mas eles podem se auto-elevar para executar tarefas administrativas dando consentimento explícito com a interface do usuário de consentimento. Essas tarefas administrativas incluem a instalação de software e drivers, a alteração das configurações de todo o sistema, a exibição ou a alteração de outras contas de usuário e a execução de ferramentas administrativas.

Em seu estado menos privilegiado, os administradores são chamados de administradores protegidos. Em seu estado elevado, eles são chamados de administradores elevados. Por outro lado, os usuários Standard não podem elevar sozinhos, mas podem pedir a um administrador para elevá-los usando a interface do usuário da credencial. A conta de Administrador Interno não requer elevação.

screen shot of 'allow program' security message

A interface do usuário de consentimento, usada para elevar os administradores protegidos para ter privilégios administrativos.

screen shot of message asking for password

A interface do usuário da credencial, usada para elevar os usuários Padrão.

O UAC fornece os seguintes benefícios:

  • Ele reduz o número de programas executados com privilégios elevados, ajudando, portanto, a impedir que os usuários alterem acidentalmente as configurações do sistema e ajude a impedir que "malware" obtenha acesso em todo o sistema. Quando a elevação é negada, o malware só pode afetar os dados do usuário atual. Sem elevação, o malware não pode fazer alterações em todo o sistema ou afetar outros usuários.
  • Para ambientes gerenciados, experiências UAC bem projetadas permitem que os usuários sejam mais produtivos ao executar como usuários Standard removendo restrições desnecessárias.
  • Ele fornece aos usuários Standard a capacidade de solicitar aos administradores que lhes concedam permissão para executar tarefas administrativas em sua sessão atual.
  • Para ambientes domésticos, ele permite um melhor controle parental sobre as alterações em todo o sistema, incluindo qual software está instalado.

Desenvolvedores: Para obter informações de implementação, consulte Reprojetar sua interface do usuário para a compatibilidade do UAC.

No Windows Vista, os administradores protegidos podem optar por ser notificados sobre todas as alterações do sistema ou nenhuma. A configuração padrão do UAC é notificar sobre todas as alterações, independentemente de sua origem. Quando você for notificado, sua área de trabalho será esmaecida e você deverá aprovar ou negar a solicitação na caixa de diálogo UAC antes de poder fazer qualquer outra coisa no computador. O escurecimento da área de trabalho é chamado de área de trabalho segura porque outros programas não podem ser executados enquanto ele está esmaecido.

Windows 7 introduz duas configurações de UAC intermediárias para administradores protegidos, além das duas de Windows Vista. A primeira é notificar os usuários somente quando um programa estiver fazendo a alteração, para que os administradores sejam automaticamente elevados quando fizerem uma alteração por conta própria. Essa é a configuração padrão do UAC no Windows 7 e também faz uso da área de trabalho segura.

A segunda configuração intermediária no Windows 7 é a mesma que a primeira, exceto que ela não usa a área de trabalho segura.

screen shot of four uac settings in windows 7

Windows 7 introduz duas configurações de UAC intermediárias.

Nota: As diretrizes relacionadas à escrita de código para dar suporte ao Controle de Conta de Usuário são apresentadas em um artigo separado.

Conceitos de design

Metas

Uma experiência de Controle de Conta de Usuário bem projetada tem as seguintes metas:

  • Eliminar a elevação desnecessária. Os usuários devem ter que elevar apenas para executar tarefas que exijam privilégios administrativos. Todas as outras tarefas devem ser projetadas para eliminar a necessidade de elevação. Geralmente, o software herdado requer privilégios de administrador desnecessariamente gravando nas seções de registro HKLM ou HKCR ou arquivos de programas ou pastas do sistema de Windows.
  • Seja previsível. Os usuários padrão precisam saber quais tarefas exigem que um administrador execute ou não possa ser executado em todos os ambientes gerenciados. Os administradores precisam saber quais tarefas exigem elevação. Se eles não puderem prever a necessidade de elevação com precisão, eles são mais propensos a dar consentimento para tarefas administrativas quando não deveriam.
  • Exigir esforço mínimo. Tarefas que exigem privilégios administrativos devem ser projetadas para exigir uma única elevação. Tarefas que exigem várias elevações rapidamente se tornam tediosas.
  • Reverter para privilégios mínimos. Depois que uma tarefa que requer privilégios administrativos for concluída, o programa deverá ser revertido para o estado de privilégio mínimo.

Fluxo de tarefas de elevação

Quando uma tarefa requer elevação, ela tem as seguintes etapas:

  1. Ponto de entrada. Tarefas que exigem elevação imediata quando o UAC está totalmente habilitado têm pontos de entrada marcados com o escudo UAC. Nesse caso, os usuários devem esperar ver uma interface do usuário de elevação imediatamente após clicar em tais comandos e devem ser mais cautelosos quando virem a interface do usuário de elevação de tarefas que não têm um escudo.

    screen shot of uac shield icons and their labels

    Neste exemplo, o controle parental e os itens do painel de controle de contas de usuário exigem elevação.

    Quando o UAC está parcialmente habilitado ou desativado completamente, o escudo UAC ainda é exibido para indicar que a tarefa envolve alterações no nível do sistema e, portanto, requer elevação, mesmo que o usuário não veja a interface do usuário de elevação. Sempre exibir o escudo UAC para tarefas que exigem elevação mantém a interface do usuário simples e previsível.

  2. Elevação. Para administradores protegidos, a tarefa solicita consentimento usando a interface do usuário de consentimento. Para usuários Standard, a tarefa solicita credenciais de administrador usando a interface do usuário da credencial.

    screen shot of two types of elevation

    Esses exemplos mostram a interface do usuário da credencial e a interface do usuário de consentimento.

  3. Processo elevado separado. Internamente, um novo processo elevado é criado para executar a tarefa.

  4. Reverter para privilégios mínimos. Se necessário, reverta para privilégios mínimos para concluir quaisquer etapas que não exijam elevação.

Observe que as tarefas não "se lembram" de estados elevados. Por exemplo, se o usuário navegar para frente e para trás sobre um ponto de entrada de elevação em um assistente, o usuário deverá elevar cada vez.

Padrões de uso

O Controle de Conta de Usuário tem vários padrões de uso (em ordem de preferência):

  1. Trabalhe para usuários Padrão. Crie o recurso para todos os usuários limitando seu escopo ao usuário atual. Ao limitar as configurações ao usuário atual (em vez de todo o sistema), você elimina totalmente a necessidade de uma interface do usuário de elevação e permite que os usuários concluam a tarefa.

    Incorreto:

    screen shot of message: you do not have privilege

    Neste exemplo, Windows usuários XP precisaram ter privilégios administrativos para exibir ou alterar o fuso horário atual.

    Correto:

    screen shot of date and time dialog box

    Neste exemplo, o recurso de fuso horário foi reprojetado no Windows 7 e Windows Vista funcionar para todos os usuários.

  2. Tenha elementos de interface do usuário separados para usuários e administradores Padrão. Separe claramente as tarefas padrão do usuário das tarefas administrativas. Forneça a todos os usuários acesso a informações úteis somente leitura. Identifique claramente as tarefas administrativas com o escudo UAC.

    graphic of uac shield showing elevation required

    Neste exemplo, o item do painel de controle do sistema mostra seu estado para todos os usuários, mas alterar as configurações em todo o sistema requer elevação.

  3. Permitir que os usuários Padrão tentem a tarefa e se elevem em caso de falha. Se os usuários Standard puderem exibir as informações e puderem fazer algumas alterações sem elevação, permita que eles acessem a interface do usuário e os elevem somente se a tarefa falhar. Essa abordagem é adequada quando os usuários Standard têm acesso limitado, como com propriedades de seus próprios arquivos no Windows Explorer. Ele também é adequado para configurações em Painel de Controle páginas de hub híbrido.

    screen shot of access is denied message

    Neste exemplo, o usuário tentou alterar as propriedades do arquivo do programa, mas não tinha privilégios suficientes. O usuário pode elevar e tentar novamente.

  4. Trabalhe somente para administradores. Use essa abordagem apenas para recursos e programas de administrador! Se um recurso for destinado apenas a administradores (e não tiver caminhos de navegação ou informações úteis somente leitura para usuários Standard), você poderá solicitar credenciais de administrador no ponto de entrada antes de mostrar qualquer interface do usuário. Use essa abordagem para assistentes longos e fluxos de página quando todos os caminhos exigirem privilégios administrativos.

    Se o programa inteiro for somente para administradores, marque-o para solicitar credenciais de administrador para iniciar. Windows exibe esses ícones de programa com a sobreposição do escudo UAC.

    screen shot of windows logo and uac shield overlay

    Neste exemplo, o programa requer privilégios administrativos para ser iniciado.

Diretrizes

Ícone do escudo UAC

  • Controles de exibição com o escudo UAC para indicar que a tarefa requer elevação imediata quando o UAC está totalmente habilitado, mesmo que o UAC não esteja totalmente habilitado no momento. Se todos os caminhos de um assistente e fluxo de página exigirem elevação, exiba o escudo UAC no ponto de entrada da tarefa. O uso adequado do escudo UAC ajuda os usuários a prever quando a elevação é necessária.

  • Se o programa der suporte a várias versões de Windows, exiba o escudo UAC se pelo menos uma versão exigir elevação. Como Windows XP nunca requer elevação, considere remover os escudos UAC para Windows XP se você puder fazer isso de forma consistente e sem prejudicar o desempenho.

  • Não exiba o escudo UAC para tarefas que não exigem elevação na maioria dos contextos. Como essa abordagem às vezes será enganosa, a abordagem preferencial é usar um comando contextual devidamente protegido.

    screen shot of photo files in windows explorer

    Como o comando Nova pasta requer elevação somente quando usado em pastas do sistema, ele é exibido sem um escudo UAC.

  • O escudo UAC pode ser exibido nos seguintes controles:

    Botões de comando:

    screen shot of command button with uac shield icon

    Um botão de comando que requer elevação imediata.

    Links de comando:

    screen shot of command link with uac shield icon

    Um link de comando que requer elevação imediata.

    Links:

    screen shot of change account link with uac shield

    Um link que requer elevação imediata.

    Menus:

    screen shot of menu with uac shield

    Um menu suspenso que requer elevação imediata.

  • Como as tarefas não se lembram de estados elevados, não altere o escudo UAC para refletir o estado.

  • Exiba o escudo UAC mesmo se o Controle de Conta de Usuário tiver sido desativado ou se o usuário estiver usando a conta de Administrador Interno. Exibir consistentemente o escudo UAC é mais fácil de programar e fornece aos usuários informações sobre a natureza da tarefa.

Elevação

  • Sempre que possível, crie tarefas a serem executadas por usuários Padrão sem elevação. Forneça a todos os usuários acesso a informações úteis somente leitura.

  • Elevar por tarefa, não por configuração. Não misture as configurações de usuário Padrão com as configurações administrativas em uma única página ou caixa de diálogo. Por exemplo, se os usuários Standard puderem alterar algumas, mas não todas as configurações, divida essas configurações como uma superfície de interface do usuário separada.

    Incorreto:

    screen shot of date and time settings dialog box

    Neste exemplo, as configurações de usuário padrão são incorretamente misturadas com configurações administrativas.

    Correto:

    screen shot of same dialog box without uac shields

    Neste exemplo, as configurações para alterar a data e a hora estão em uma caixa de diálogo separada, disponível somente para administradores. As configurações de fuso horário estão disponíveis para usuários Standard e não são misturadas com configurações administrativas.

  • Não considere a necessidade de elevar ao determinar se um controle deve ser exibido ou desabilitado. Isso ocorre porque:

    • Em ambientes não gerenciados, suponha que os usuários Standard possam elevar solicitando a um administrador. Desabilitar controles que exigem elevação impedirá que os usuários tenham administradores elevados.
    • Em ambientes gerenciados, suponha que os usuários Standard não possam elevar nada. Remover controles que exigem elevação impedirá que os usuários saibam quando parar de procurar.
  • Para eliminar a elevação desnecessária:

    • Se uma tarefa puder exigir elevação, eleve o mais tarde possível. Se uma tarefa precisar de uma confirmação, exiba a interface do usuário de elevação somente depois que o usuário tiver confirmado. Se uma tarefa sempre exigir elevação, eleve em seu ponto de entrada.
    • Depois de elevado, mantenha-se elevado até que privilégios elevados não sejam mais necessários. Os usuários não devem ter que elevar várias vezes para executar uma única tarefa.
    • Se os usuários precisarem se elevar para fazer uma alteração, mas optarem por não fazer alterações, deixe os botões de confirmação positivos habilitados, mas manipule a confirmação como um cancelamento. Fazer isso elimina os usuários que precisam elevar apenas para fechar uma janela.
    • Incorreto:
    • screen shot of window with only one button active
    • Neste exemplo, o botão Salvar Alterações está desabilitado para evitar uma elevação desnecessária, mas fica habilitado quando os usuários alteram a seleção. No entanto, o botão de confirmação desabilitado faz parecer que os usuários realmente não têm escolha.
  • Não exiba uma mensagem de erro quando as tarefas falharem porque os usuários optaram por não elevar. Suponha que os usuários optaram intencionalmente por não prosseguir, portanto, não considerarão essa situação como um erro.

    Incorreto:

    screen shot of message: fabrikam restore can't run

    Neste exemplo, a Restauração fabrikam fornece incorretamente uma mensagem de erro quando o usuário decide não elevar.

  • Não exiba avisos para explicar que os usuários talvez precisem elevar seus privilégios para executar tarefas. Permitir que os usuários descubram esse fato por conta própria.

  • Exiba o escudo UAC e a interface do usuário de elevação com base na tabela a seguir:

    Objeto Circunstância Onde colocar o escudo UAC Quando elevar
    Programa
    O programa inteiro é somente para administradores.
    screen shot of windows logo and uac shield overlay
    Sobreposição do escudo UAC no ícone do programa.
    Exibir a interface do usuário de elevação na inicialização.
    Comando
    O comando inteiro é somente para administradores.
    screen shot of change account link and uac shield
    Escudo UAC no botão de comando ou link.
    Exiba a interface do usuário de elevação quando o botão de comando ou o link for clicado, mas após qualquer confirmação.
    Comando
    O comando exibe informações úteis somente leitura apropriadas para todos os usuários, mas as alterações exigem privilégios administrativos.
    screen shot of change settings link and uac shield
    Escudo UAC no botão de comando ou link para fazer alterações.
    Exiba a interface do usuário de elevação quando o botão de comando for clicado, mas após qualquer confirmação.
    Comando
    Os usuários padrão podem exibir as informações e possivelmente fazer algumas alterações sem elevação. permitir que os usuários padrão tentem e elevem em caso de falha.
    screen shot of error with uac icon on retry button
    Não mostre o escudo UAC para o comando, mas mostre-o para o ponto de entrada de elevação se o comando falhar.
    Exibir a interface do usuário de elevação quando o usuário repetir o comando.
    Etapa da tarefa
    Todas as etapas subsequentes exigem elevação.
    screen shot of next command button with uac shield
    Escudo UAC no botão Avançar (ou equivalente).
    Exiba a interface do usuário de elevação quando o botão Avançar ou outro botão de confirmação for clicado.
    Etapa da tarefa
    Alguns branches exigem elevação.
    screen shot of command link with uac shield
    Escudo UAC em links de comando que exigem elevação.
    Exiba a interface do usuário de elevação quando os links de comando com o escudo UAC forem clicados.

Interface do usuário de elevação

  • Se o usuário fornecer uma conta que não seja válida (nome ou senha) ou não tenha privilégios de administrador, basta redicionar a interface do usuário da credencial. Não exiba uma mensagem de erro.
  • Se o usuário cancelar a interface do usuário de credencial, retorne o usuário para a interface do usuário original. Não exiba uma mensagem de erro.
  • Se o Controle de Conta de Usuário tiver sido desativado e um usuário Standard tentar executar uma tarefa que exija elevação, forneça uma mensagem de erro informando "Esta tarefa requer privilégios de administrador. Para executar essa tarefa, você deve fazer logon usando uma conta de administrador."

screen shot of task requires privileges message

Neste exemplo, o Controle de Conta de Usuário foi desativado, portanto, uma mensagem de erro explica que o usuário deve usar uma conta de administrador.

Assistentes

  • Não se eleve várias vezes. Depois que um assistente é elevado, ele deve permanecer elevado.
  • Se a tarefa for executada dentro do assistente, coloque um escudo UAC no botão "Próximo" da página Confirmar (que deve receber um rótulo mais específico). Quando o usuário confirma:
    • Se a próxima página for uma página Progresso, avance para essa página e exiba modicamente a interface do usuário de elevação. Após a elevação bem-sucedida, execute a tarefa.
    • Se a próxima página for uma página de Conclusão, avance para essa página (mas substitua temporariamente seu conteúdo por "Aguardando permissão...") e exiba modicamente a interface do usuário de elevação. Após a elevação bem-sucedida, execute a tarefa e exiba o conteúdo da página Conclusão.
    • Se o usuário cancelar a interface do usuário de elevação, retorne à página Confirmar. Isso permite que o usuário tente novamente.
  • Se a tarefa for executada após a conclusão do assistente, coloque um escudo UAC no botão "Concluir" da página Confirmar (que deve receber um rótulo mais específico). Quando o usuário confirma:
    • Permaneça na página Confirmar e exiba modicamente a interface do usuário de elevação. Após a elevação bem-sucedida, feche o assistente.
    • Se o usuário cancelar a interface do usuário de elevação, retorne à página Confirmar. Isso permite que o usuário tente novamente.
  • Para assistentes longos destinados somente aos administradores, você pode solicitar credenciais de administrador no ponto de entrada antes de mostrar qualquer interface do usuário.

Texto

  • Não use reticências apenas porque um comando requer elevação. A necessidade de elevar é indicada com o escudo UAC.

Documentação

Ao fazer referência ao Controle de Conta de Usuário:

  • Consulte o recurso como Controle de Conta de Usuário (na primeira menção) ou UAC (na menção subsequente), não conta de usuário com privilégios mínimos ou LUA.
  • Consulte os não administradores como usuários Padrão.
  • Consulte os administradores internos do computador como administradores internos.

Na documentação do usuário:

  • Consulte o ato de dar consentimento para executar uma tarefa administrativa como conceder permissão.

Na programação e em outras documentações técnicas:

  • Consulte o ato de dar consentimento para executar uma tarefa administrativa como elevação.
  • No contexto do UAC, consulte os administradores como administradores protegidos quando não forem elevados e administradores elevados após a elevação.
  • Consulte a caixa de diálogo usada para inserir senhas como a interface do usuário da credencial. Consulte a caixa de diálogo usada para dar consentimento como a interface do usuário de consentimento. Consulte ambos geralmente como interface do usuário de elevação.