Controle de Conta de Usuário
Observação
Este guia de design foi criado para o 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 maneira previsível e requer um 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 mínimos de usuário, mas 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, alteração de configurações em todo o sistema, exibição ou alteração de outras contas de usuário e 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 de credencial. A conta de Administrador Interno não requer elevação.
A interface do usuário de consentimento, usada para elevar os administradores protegidos para ter privilégios administrativos.
A interface do usuário de credencial, usada para elevar os usuários Standard.
O UAC oferece 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 suas configurações do sistema e ajudando 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 de UAC bem projetadas permitem que os usuários sejam mais produtivos ao executar como usuários Standard removendo restrições desnecessárias.
- Ele dá aos usuários Standard a capacidade de pedir 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 compatibilidade com o 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 estão esmaecidos.
O Windows 7 apresenta duas configurações de UAC intermediárias para administradores protegidos, além das duas do 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 usa a á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.
O Windows 7 apresenta 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.
Metas
Uma experiência bem projetada de Controle de Conta de Usuário tem as seguintes metas:
- Eliminar a elevação desnecessária. Os usuários devem ter que elevar apenas para executar tarefas que exigem privilégios administrativos. Todas as outras tarefas devem ser projetadas para eliminar a necessidade de elevação. Muitas vezes, 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 Windows.
- Seja previsível. Os usuários padrão precisam saber quais tarefas exigem que um administrador execute ou não possam ser executadas em 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á reverter ao estado de privilégio mínimo.
Fluxo de tarefas de elevação
Quando uma tarefa requer elevação, ela tem as seguintes etapas:
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 depois de clicar nesses 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.
Neste exemplo, os itens do painel de controle de contas de usuário e 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.
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 de credencial.
Esses exemplos mostram a interface do usuário de credencial e a interface do usuário de consentimento.
Processo elevado separado. Internamente, um novo processo elevado é criado para executar a tarefa.
Reverter para privilégios mínimos. Se necessário, reverter 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.
O Controle de Conta de Usuário tem vários padrões de uso (em ordem de preferência):
Trabalhar para usuários Standard. 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:
Neste exemplo, os usuários do Windows XP tiveram que ter privilégios administrativos para exibir ou alterar o fuso horário atual.
Correto:
Neste exemplo, o recurso de fuso horário foi reprojetado no Windows 7 e no Windows Vista para funcionar para todos os usuários.
Tenha elementos de interface do usuário separados para usuários e administradores Standard. Separe claramente as tarefas do usuário Padrão das tarefas administrativas. Dê a todos os usuários acesso a informações úteis somente leitura. Identifique claramente as tarefas administrativas com o escudo UAC.
Neste exemplo, o item painel de controle Sistema mostra seu estado para todos os usuários, mas alterar as configurações em todo o sistema requer elevação.
Permitir que os usuários Padrão tentem a tarefa e 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.
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.
Trabalhe apenas para administradores. Use essa abordagem somente 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 longos assistentes 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. O Windows exibe esses ícones de programa com a sobreposição do escudo UAC.
Neste exemplo, o programa requer privilégios administrativos para iniciar.
Exiba controles 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 do Windows, exiba o escudo UAC se pelo menos uma versão exigir elevação. Como o 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.
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:
Um botão de comando que requer elevação imediata.
Links de comando:
Um link de comando que requer elevação imediata.
Links:
Um link que requer elevação imediata.
Menus:
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.
Sempre que possível, crie tarefas a serem executadas por usuários Standard sem elevação. Dê a todos os usuários acesso a informações úteis somente leitura.
Elevar em uma base 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:
Neste exemplo, as configurações de usuário Padrão são incorretamente misturadas com configurações administrativas.
Correto:
Neste exemplo, as configurações para alterar a data e a hora estão em uma caixa de diálogo separada, disponível apenas 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 impediria 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 impediria os usuários de saber 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 nenhuma alteração, deixe os botões de confirmação positivos habilitados, mas manipulem o commit como um cancelamento. Isso elimina os usuários que precisam elevar apenas para fechar uma janela.
- Incorreto:
- 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, eles não considerarão essa situação como um erro.
Incorreto:
Neste exemplo, a Restauração da 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 podem precisar 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.
Sobreposição de 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.
Escudo UAC no botão de comando ou no 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 de somente leitura apropriadas para todos os usuários, mas as alterações exigem privilégios administrativos.
Escudo UAC no botão de comando ou no 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 se elevem em caso de falha.
Não mostre o escudo UAC para o comando, mas mostre-o para o ponto de entrada de elevação se o comando falhar.Exiba a interface do usuário de elevação quando o usuário tentar novamente o comando. Etapa da tarefa Todas as etapas subsequentes exigem elevação.
Escudo UAC no botão Avançar (ou equivalente).Exiba a interface do usuário de elevação quando Próximo ou outro botão de confirmação for clicado. Etapa da tarefa Alguns branches exigem elevação.
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.
- 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 exibir novamente 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 de volta 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."
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.
- Não se eleve várias vezes. Depois que um assistente é elevado, ele deve permanecer elevado.
- Se a tarefa for executada no assistente, coloque um escudo UAC no botão "Avançar" 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 modally 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 conclusão, avance para essa página (mas substitua temporariamente seu conteúdo por "Aguardando permissão...") e exiba modally 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 modally 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 apenas a administradores, você pode solicitar credenciais de administrador no ponto de entrada antes de mostrar qualquer interface do usuário.
- Não use reticências apenas porque um comando requer elevação. A necessidade de elevar é indicada com o escudo UAC.
Ao se referir ao Controle de Conta de Usuário:
- Consulte o recurso como Controle de Conta de Usuário (na primeira menção) ou UAC (em menção subsequentes), não Conta de usuário com privilégios mínimos ou LUA.
- Consulte não administradores como usuários Padrão.
- Consulte administradores de computador internos 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 administradores como Administradores protegidos quando não 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.