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

 

 

Comments (6)

  1. Fernando says:

    Muito bom mesmo! Eu estava ficando louco, não fazia a menor ideia do motivo da minha aplicação não reconhecer o mapeamento. Show!

  2. Paulo Sergio says:

    Obrigado pela postagem, me salvou!!!

  3. Jean Freitas says:

    Muito Obrigado, resolveu como é descrito, parabéns!

  4. Sousa says:

    Parabéns, resolveu meu problema tb. obg.

  5. nilson says:

    Muito bom, resolveu meu problema, bem explicado sem enrolação. Perdi bastante tempo procurando em foruns que me induziram ao erro.

    Valeu mesmo pelo tutorial…

    1. Show Nilson!!!!
      Obrigado pelo feedback!
      Abraços.

Skip to main content