Controlo de Conta de Utilizador
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 orientações ainda se aplica em princípio, mas a apresentação e os exemplos não refletem as nossas orientações de conceção atuais .
Uma experiência de Controle de Conta de Usuário bem projetada ajuda a evitar alterações indesejadas em todo o sistema de uma forma previsível e que requer um esforço mínimo.
Com o Controle de Conta de Usuário (UAC) totalmente habilitado, os administradores interativos normalmente são executados com privilégios de usuário mínimos, mas eles podem se 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 de configurações em todo o sistema, a visualização ou 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 padrão não podem elevar sozinhos, mas podem pedir a um administrador para elevá-los usando a interface do usuário de credenciais. A conta de Administrador Incorporado não requer elevação.
A interface do usuário de consentimento, usada para elevar os administradores protegidos a terem privilégios administrativos.
A interface do usuário de credenciais, usada para elevar os usuários padrão.
O UAC oferece os seguintes benefícios:
- Ele reduz o número de programas que são executados com privilégios elevados, ajudando a evitar que os usuários alterem acidentalmente as configurações do sistema e ajudando a impedir que "malware" ganhe acesso em todo o sistema. Quando a elevação é negada, o malware só é capaz de 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 padrão, removendo restrições desnecessárias.
- Ele dá aos usuários padrão a capacidade de pedir aos administradores que lhes deem permissão para executar tarefas administrativas em sua sessão atual.
- Para ambientes domésticos, permite um melhor controlo parental sobre as alterações em todo o sistema, incluindo o software que está instalado.
Desenvolvedores: Para obter informações de implementação, consulte Redesign Your UI for UAC Compatibility.
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 ficará esmaecida e você deverá aprovar ou negar a solicitação na caixa de diálogo UAC antes de poder fazer qualquer outra coisa no seu computador. O escurecimento da área de trabalho é conhecido como a de área de trabalho segura porque outros programas não podem ser executados enquanto ela estiver esmaecida.
O Windows 7 apresenta duas configurações intermediárias do UAC para administradores protegidos, além das duas do Windows Vista. A primeira é notificar os usuários apenas quando um programa está fazendo a alteração, para que os administradores sejam automaticamente elevados quando eles mesmos fizerem uma alteração. Esta é 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 ele não usa a área de trabalho segura.
O Windows 7 apresenta duas configurações intermediárias do UAC.
Nota: 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
Golos
Uma experiência de Controle de Conta de Usuário bem projetada tem os seguintes objetivos:
- Elimine 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 nas pastas Arquivos de Programas ou Sistema Windows.
- Seja previsível. Os usuários padrão precisam saber quais tarefas exigem que um administrador execute ou não podem 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.
- Exigem um esforço mínimo. As 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 entediantes.
- Reverter para privilégios mínimos. Quando uma tarefa que requer privilégios administrativos estiver concluída, o programa deverá reverter para o estado de menor privilégio.
Fluxo de tarefas de elevação
Quando uma tarefa requer elevação, ela tem as seguintes etapas:
Ponto de entrada. As tarefas que exigem elevação imediata quando o UAC está totalmente habilitado têm pontos de entrada marcados com o escudo do 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 muito 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 dos pais exigem elevação.
Quando o UAC está parcialmente habilitado ou desativado completamente, o escudo do 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. A exibição constante do 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 padrão, a tarefa solicita credenciais de administrador usando a interface do usuário de credenciais.
Estes 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 o privilégio mínimo. Se necessário, reverta para o privilégio mínimo para concluir todas as etapas que não exigem elevação.
Observe que as tarefas não "lembram" estados elevados. Por exemplo, se o usuário navega para frente e para trás sobre um ponto de entrada de elevação em um assistente, o usuário deve elevar cada vez.
Padrões de utilização
O Controle de Conta de Usuário tem vários padrões de uso (em ordem de preferência):
Trabalhe para usuários padrão. Projete o recurso para todos os usuários, limitando seu escopo ao usuário atual. Ao limitar as configurações ao usuário atual (em oposição a 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 precisavam ter privilégios administrativos para exibir ou alterar o fuso horário atual.
Correto:
Neste exemplo, o recurso de fuso horário foi redesenhado 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 padrão. Separe claramente as tarefas de 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 do painel de controle do sistema mostra seu estado para todos os usuários, mas alterar as configurações de todo o sistema requer elevação.
Permita que os usuários padrão tentem tarefas e aumentem em caso de falha. Se os usuários padrão puderem visualizar as informações e puderem fazer algumas alterações sem elevação, permita que eles acessem a interface do usuário e façam com que eles sejam elevados somente se a tarefa falhar. Essa abordagem é adequada quando os usuários padrão têm acesso limitado, como com propriedades de seus próprios arquivos no Windows Explorer. Também é adequado para configurações em páginas de hub híbrido do Painel de Controle.
Neste exemplo, o usuário tentou alterar as propriedades do arquivo de programa, mas não tinha privilégios suficientes. O usuário pode elevar e tentar novamente.
Trabalhe apenas 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 padrão), 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 exigem privilégios administrativos.
Se todo o programa for apenas para administradores, marque-o para solicitar credenciais de administrador para iniciar. O Windows exibe esses ícones de programa com a sobreposição de escudo UAC.
Neste exemplo, o programa requer privilégios administrativos para ser iniciado.
Orientações
Ícone do escudo UAC
Exibir controles com o escudo UAC para indicar que a tarefa requer elevação imediata quando o UAC estiver 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 seu programa suportar 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 do Windows XP se puder fazê-lo 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 preferida é usar um comando contextual devidamente blindado.
Como o comando Nova pasta requer elevação somente quando usado em pastas do sistema, ele é exibido sem uma proteção 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:
Uma ligação 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 alteram o escudo do UAC para refletir o estado.
Exiba a proteção 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. A exibição consistente do 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, projete tarefas a serem executadas por usuários padrão sem elevação. Dê a todos os usuários acesso a informações úteis somente leitura.
Elevar por tarefa, não por configuração. Não misture configurações de usuário padrão com configurações administrativas em uma única página ou caixa de diálogo. Por exemplo, se os usuários padrão puderem alterar algumas, mas não todas, as configurações sejam divididas como uma superfície de interface do usuário separada.
Incorreto:
Neste exemplo, as configurações de usuário padrão são misturadas incorretamente com as 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 padrão 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 desativado. Isto porque:
- Em ambientes não gerenciados, suponha que os usuários padrão possam aumentar perguntando a um administrador. A desativação de controles que exigem elevação impediria que os usuários tivessem administradores elevados.
- Em ambientes gerenciados, suponha que os usuários padrão não podem elevar em nada. A remoção de controles que exigem elevação impediria que os usuários soubessem quando parar de procurar.
Para eliminar elevações desnecessárias:
- Se uma tarefa 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 confirmar. Se uma tarefa sempre requer elevação, eleve em seu ponto de entrada.
- Uma vez elevado, permaneça 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 elevar para fazer uma alteração, mas optarem por não fazer alterações, deixe os botões de confirmação positiva ativados, mas trate a confirmação como um cancelamento. Isso elimina que os usuários tenham que elevar apenas para fechar uma janela.
- Incorreto:
-
- Neste exemplo, o botão Salvar alterações é 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 desativado 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, para que não considerem essa situação como um erro.
Incorreto:
Neste exemplo, o Fabrikam Restore 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. Permita que os usuários descubram esse fato por conta própria.
Exiba a interface do usuário de proteção e elevação do UAC com base na tabela a seguir:
Objeto Circunstância Onde colocar o escudo UAC Quando elevar Programação Todo o programa é apenas para administradores.
Sobreposição do escudo UAC no ícone do programa.Exibir a interface do usuário de elevação na inicialização. Comando Todo o comando é apenas para administradores. do 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 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. do 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 visualizar as informações e, possivelmente, fazer algumas alterações sem elevação. permitir que os usuários padrão tentem e aumentem 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.Exibir a interface do usuário de elevação quando o usuário tentar novamente o comando. Etapa da tarefa Todas as etapas subsequentes requerem elevação.
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 ramos necessitam de 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 módulo UAC forem clicados.
IU de elevação
- Se o usuário fornecer uma conta que não é válida (nome ou senha) ou não tem privilégios de administrador, basta exibir novamente a interface do usuário de credenciais. Não exiba uma mensagem de erro.
- Se o usuário cancelar a interface do usuário de credencial, retorne a interface do usuário de volta à 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 padrão 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.
Assistentes
- Não eleve várias vezes. Uma vez que um assistente é elevado, ele deve permanecer elevado.
- Se a tarefa for executada dentro do assistente, coloque um escudo UAC no botão "Avançar" da página Confirmar (que deve receber um rótulo específico mais ). Quando o usuário confirma:
- Se a próxima página for uma página Progresso, avance para essa página e exiba modalmente 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 modalmente 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 específico mais ). Quando o usuário confirma:
- Permaneça na página Confirmar e exiba modalmente 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.
Texto
- Não use reticências apenas porque um comando requer elevação. A necessidade de elevação é indicada com o escudo UAC.
Documentação
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 (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 de computador internos como Administradores internos.
Na documentação do usuário:
- Refere-se ao ato de dar consentimento para executar uma tarefa administrativa como dando permissão.
Em programação e outra documentação técnica:
- Refere-se ao 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 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 de credenciais. Consulte a caixa de diálogo usada para dar consentimento como a interface do usuário de consentimento. Refere-se a ambos geralmente como Elevation UI.