Linha de Código

Blogs e Fóruns - Portal Linha de Código - Espaço criado em 26/06/2006.
Welcome to Linha de Código Sign in | Join | Help
in Search

Rodrigo Moreira

User Account Control (UAC): Vilão ou mocinho?

O UAC (User Account Control) é um recurso realmente polêmico do Windows Vista, e acredito que isso ocorre devido ao não conhecimento do mesmo. Nesse momento você deve dizer “mas eu conheço sim, ele é aquela tela chata que aparece toda hora perguntando se eu autorizo ou nego uma ação” e eu digo que você está errado. Sim, ao contrário do que muita revista “especializada” prega, esta tela é apenas a maneira mais comum de interação de um usuário com o UAC, sendo o UAC um mecanismo muito maior do sistema operacional, que mais do que exibe popups, mas sim gerencia as permissões nas ações executadas no sistema operacional.

Tela de confirmação do Windows Vista
Tela de confirmação do User Account Control

Explico:

Por questões de segurança, o ideal em qualquer plataforma é nunca operar sobre um sistema com usuário de alto poder administrativo. O motivo simples e lógico é que um software que seja executado estará no contexto do usuário ativo e programas maliciosos infelizmente existem. Para exemplificar, você bem sabe que os malwares certamente tentarão gravar algo no registro do seu SO, além de se auto-copiar para pastas de sistema (System, por exemplo), porém, se o seu usuário não for administrador, não tem jeito: ele simplesmente não conseguirá gravar. O grande problema nesse assunto é o fato de ser consideravelmente trabalhoso possuir duas contas, uma administradora e outra não, e trabalhar somente com a conta não administradora. Veja um exemplo: Programar sem ser administrador é possível? Sim, é. Mas não sem um pouco de suor. É necessário configurar a conta para privilégios de debug, privilégios nas pastas de aplicação, além da configuração em utilitários para compiladores e etc. Talvez este trabalho excessivo, que só nos toma tempo hábil de trabalho, seja o motivo de que quase ninguém no mundo venha a seguir tal recomendação de não usar usuários administradores.

A Microsoft tentou dar um jeito isso anteriormente. No Windows XP, para evitar que você precisasse deslogar e logar novamente no sistema operacional para instalar um software (assumindo que o seu usuário padrão não é administrador), existe a caixa de diálogo “executar como”, mas ela também não foi o suficiente para que as pessoas usassem somente usuários restritos, por isso surgiu o famigerado “User Account Control” (UAC) no Windows Vista.

A idéia por detrás do UAC é simples. Tanto os usuários administradores quanto usuários comuns, não possuem privilégios administrativos no sistema operacional. Sim, é isso mesmo que estou dizendo. Os dois tipos de usuários possuem os mesmos privilégios, exceto por uma questão: O usuário administrativo tem o poder de “exigir” do sistema operacional o poder administrativo para um contexto específico, ou seja, exigir que durante a execução de uma determinada instância de um aplicativo (Uma janela do Windows Explorer, por exemplo), ou que durante uma ação específica dentro de um aplicativo (Alterar uma pasta restrita do sistema, por exemplo), o usuário possua tais direitos administrativos. No mundo do conto de fadas, isso deixaria todos mais seguros e felizes, já que não precisariam mais usar duas contas de usuários, memorizarem duas senhas e etc, mas não foi isso o que se viu por aí.

O UAC é chato, mas a culpa não é da Microsoft. Na verdade, o fato de todos usarem seus usuários administradores provocou uma acomodação aos desenvolvedores de software, que simplesmente desenvolvem software que só funcionam para administradores. Um exemplo claro e simples disso é a escrita de arquivos. Solicitar permissão ao diretório específico, planejar se o arquivo irá ficar no IsolatedStorage, na pasta de perfil, simplesmente gravam os arquivos em um diretório qualquer ou até mesmo, erroneamente na pasta onde o sistema está instalado. Isso sem contar as pessoas que ignoram a existência do enum “System.Environment.SpecialFolder” e colocam hardcoded “gravar em Arquivos de Programas”. Por isso que as vezes você está em um sistema operacional em português, todos os softwares estão instalados em “Arquivos de Programas” porém um ou outro estão em “Program Files”. Neste caso, alguém deixou fixo no código a gravação do arquivo na pasta “Program Files” ao invés de usar o endereço relativo representado no enum criando essa bagunça em seu querido HD.

Sim, isso é um problema. A questão é simples. Olhe para a sua pasta “Arquivo de Programas”. Certamente você encontrará arquivos e pastas de sistemas que foram desinstalados do computador. Como os arquivos possuíam dados referentes ao seu uso do software (jogos salvos, ou informações exportadas para uma planilha, quem sabe?), os mesmos não foram removidos do computador no momento da instalação. Pronto, agora você tem um monte de lixo espalhado pelo computador. Arquivo temporário deve ir para a pasta temporária não? E arquivos referentes ao uso de um usuário, para a pasta de seu perfil, correto?

Mais do que simplesmente livrar os usuários de sofrerem os problemas do uso administrativo, vejo o UAC como um “conscientizador” da indústria do software. Para funcionar no Windows Vista, você precisa conviver com o UAC e fazer as coisas do jeito certo. Quem sabe quando o usuário reclamar que o software exige muito privilégio administrativo, o fabricante não resolva fazer um software que exija menos direitos possíveis para a sua execução?

Nas próximas semanas estarei falando de maneira um pouco mais detalhada sobre o funcionamento do UAC dentro do Windows Vista e principalmente sobre como trabalhar com ele dentro do Visual Studio, desenvolvendo aplicações altamente funcionais para Windows Vista e ainda, sobre como o Windows Vista se comportará com as suas aplicações desenvolvidas para plataformas anteriores.

E que a força esteja conosco nessa jornada detalhada sobre o mundo do UAC.

Published quarta-feira, 18 de junho de 2008 15:16 by JackFlash
Filed Under: , ,

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

 

Psysleddy said:

omg.. good work, guy
setembro 23, 2008 15:59
 

Plerecest said:

Brilliant news!, dude
setembro 28, 2008 14:06

What do you think?

(required) 
(optional)
(required) 

This Blog

Post Calendar

<junho de 2008>
doseteququse
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

Syndication

Powered by Community Server, by Telligent Systems