Controle de Conta de Usuário (UAC) e o Mapeamento de Drives

Esse é um problema bastante simples, mas que ocorre frequentemente quando a área de suporte vai realizar o troubleshooting na máquina do usuário.

Imagine o seguinte cenário: o UAC está configurado no nível padrão e o usuário possui um recurso de rede mapeado para, por exemplo, o drive Z.

Vamos supor que o suporte tente executar como administrador uma aplicação localizada no recurso Z que está apresentando problema para diagnosticar se o erro é decorrente da falta de acesso.

Quando o suporte executa a aplicação como administrador é gerado outro erro informando ue o mapeamento Z não existe. Entretanto, o mesmo mapeamento é exibido no Windows Explorer.

Exemplo

Abra o prompt de comando e mapeie a pasta Windows para o drive Z, através do comando subst Z: C:\Windows. Abra o Windows Explorer e observe que o drive Z está mapeado conforme esperado.

Execute agora o prompt de comando elevado (botão direito e executar como administrador). Observe que ao tentar acessar o drive Z (digite Z: e pressione enter) é exibida uma mensagem informando que o drive não existe.

Motivo

Quando um administrador faz logon, o Windows cria dois tokens de acesso separados para o usuário: um token de acesso sem privilégios administrativos (token filtrado) e um token de acesso de administrador (token full). Para maiores detalhes veja o artigo Controle de Conta de Usuário (UAC).

Quando recursos de rede são mapeados, eles estão associados a sessão de logon corrente para o token de acesso do processo atual. Isso significa que, se um usuário usa o prompt de comando (cmd. exe) juntamente com o token de acesso filtrado para mapear um compartilhamento de rede, o compartilhamento de rede não está mapeado para processos que são executados com o token de acesso total de administrador.

Solução

Existem duas maneiras de resolver esse problema, sendo a primeira duplicar o mapeamento da unidade de rede para o token elevado. Nesse caso, além do primeiro mapeamento é necessário realizar um segundo através do prompt de comando elevado (executado com privilégio administrativo).

A segunda opção é configurar a chave EnableLinkedConnections no registro do Windows para compartilhar as conexões entre os tokens filtrado e de administrador (full). Após configurar essa chave,o LSA (Local Security Authority) verifica se existe outro token que está associado a sessão do usuário e se o recurso de rede está mapeado para o token. Caso o LSA determinar que existe o mapeamento para o outro token do usuário, ele adiciona o mapemanento para o token atual.

Siga os seguintes passos para configurar a chave EnableLinkedConnections:

1.Abra o Regedit.exe.

2.Localize a seguinte chave de registro: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

3.Crie uma nova subchave do tipo DWORD com o nome EnableLinkedConnections e com o valor 1.

4.Reinicie o computador.

 Maiores detalhes em: http://support.microsoft.com/kb/937624