Prompt de linha de comando elevado não pode acessar unidades compartilhadas

62
  1. Mapeio um compartilhamento de outra máquina usando minha conta de usuário.
  2. Eu inicio um prompt de comando elevado (cmd.exe, clique com o botão direito do mouse em Executar como administrador).
  3. Navegar para a unidade compartilhada (Z :) resulta em:

The system cannot find the drive specified

Agora, se eu abrir um prompt de comando não elevado, posso navegar para Z: tudo bem.

mindless.panda
fonte
Ver também superuser.com/questions/690287/...
jamesdlin

Respostas:

47

Abrir um Windows Explorer como administrador e recriar os compartilhamentos de rede não funcionou para mim. Então, encontrei esta solução: crie o compartilhamento no próprio prompt de comando. Funcionou para mim.

net use f: \\remoteserver\subfolder      

Mesmo se a unidade já estiver mapeada no Windows Explorer, ainda funcionou.

Nota: Use apenas uma barra invertida antes da subpasta

msb
fonte
25

Provavelmente isso não é um problema de permissões de arquivo, mas está relacionado a:

  • Os compartilhamentos de rede associados às sessões (ou seja, usuários diferentes podem ter um conjunto diferente de compartilhamentos de rede). Observe que um usuário pode ter mais de uma sessão.
  • Como o controle de conta de usuário funciona.

Como quase todos os usuários usaram uma conta de administrador no XP (como a maioria dos programadores não se preocupou em fazer seus programas funcionarem com contas limitadas), a Microsoft criou uma "versão limitada" das contas de administrador começando no Vista, e em algumas situações as duas versões " "conta como usuários diferentes (já que são sessões separadas).

Tente iniciar um Windows Explorer elevado (ou seja, um Windows Explorer iniciado com "Executar como administrador") e recrie todos os compartilhamentos de rede, o que deve fazer o truque.

O motivo de ter que recriar os compartilhamentos é explicado nesta entrada de blog do MSDN:

Unidades de rede mapeadas com UAC no Windows Vista

Editar: bits relevantes da entrada do blog (ênfase minha):

Para simplificar, vamos supor que você esteja executando como administrador com o UAC ativado (embora, para ser mais seguro, seja melhor executar como usuário padrão). Ao fazer login, você cria um novo token. Em seguida, detectamos que você tem o UAC ativado, efetuamos logon pela segunda vez e terminamos com um novo token (altamente restrito), que usamos para iniciar o shell. Existem dois eventos de login separados .
(...)
Esse recurso de conveniência facilita encontrar problemas com as unidades de rede mapeadas. Antes do Windows 2000 SP2, os nomes dos dispositivos permaneciam visíveis globalmente até serem removidos explicitamente ou o sistema reiniciado. Por motivos de segurança , modificamos esse comportamento a partir do Windows 2000 SP2. Desse ponto em diante,todos os dispositivos estão associados a um ID de autenticação (LUID) - um ID gerado para cada sessão de logon .
(...)
Como essas unidades mapeadas estão associadas à LUID e como os aplicativos elevados estão usando uma LUID diferente gerada durante um evento de login separado, o aplicativo elevado não verá mais nenhuma unidade mapeada para esse usuário.

Alberto Martinez
fonte
4
usei um Windows Explorer elevado e o prompt de comando elevado ainda não conseguiu encontrar a unidade mapeada.
icelava
1
Meu entendimento é que no Windows 7, quando eu "Executar como administrador", não está sendo executado como a conta com o nome "Administrador" (Windows XP-ish), mas como minha conta, mas com alguns bits de superusuário. Não entendo por que há alguma diferença entre os dois cenários que descrevi.
mindless.panda
1
Há uma diferença porque as duas "versões" de qualquer conta de administrador para alguns aspectos funcionam como uma conta diferente, mesmo que sejam realmente a mesma conta com permissões diferentes (isso é explicado no blog que vinculei).
Alberto Martinez
1
@ mindless.panda: Você está absolutamente certo. A opção "Executar como administrador" refere-se inteiramente à configuração de administrador relacionada ao UAC. Simplesmente não tem nada a ver com o grupo Administradores. Se você desabilitar o UAC (que pode exigir uma reinicialização para ter efeito total), poderá descobrir que a opção "Executar como administrador" nem existe enquanto o UAC está desabilitado. Observe que um prompt de comando do administrador ainda pode usar as unidades compartilhadas como UNC, por exemplo, \\ servername \ dirname - são apenas as letras das unidades que se perdem apenas porque foi assim que a Microsoft a projetou. Remake ', e tudo é bom nesse prompt.
TOOGAM
Eu sou administrador, não pode lançar uma janela do explorer elevados (Win 8)
user15507
7

A resposta de Alberto Martinez descreve por que a unidade de rede mapeada não está acessível.

Aqui está a correção do registro para resolver o problema:

  • Abra o regedit e vá para HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  • Adicione um novo valor DWORD (32 bits) chamado EnableLinkedConnections .
  • Ajuste o valor para 1 (ou 00000001).

Saia do regedit e reinicie o computador.

user1251007
fonte
1
Esta é definitivamente a melhor solução para esse problema.
Alecov
1
Não funciona no Win10
Christian Schäfer
ou servidor windows 2016
RM
1

Mapeio um compartilhamento de outra máquina usando minha conta de usuário.

essa unidade de rede está disponível APENAS na conta de usuário mapeada na unidade de rede.

desfeito
fonte
0

Inicie o cmd como administrador, digite o comando net use z: \\net\path /persistent:yese pronto. Outra coisa que fiz, e isso está indo além da pergunta do op, foi depois de fixar o cmd na barra de tarefas e em propriedades-> Avançado, configurando-o para ser executado como administrador, adicionei / K z: no final do 'target' caixa de texto, por isso tornou-se: %windir%\system32\cmd.exe /K z:. Porque definir o parâmetro "Iniciar em" não parece funcionar. Isso resultou em um ícone na minha barra de tarefas que inicia uma janela do cmd como administrador e com o prompt na unidade mapeada. E não esqueça de ir para as propriedades novamente e personalizar a fonte, as cores, o tamanho e a posição da janela, assim como o buffer de rolagem de texto e os tamanhos de buffer do histórico de comandos!

Martin Hjerne
fonte
-2

Verifique o caminho da rede e desconecte a unidade mapeada (Z :) Execute o CMD como administrador; uma vez lá, use o comando "net use" para mapear a unidade novamente. net use Z: \ SharePath e tente acessá-lo novamente.

AlexR
fonte