Por que cmd.exe não pode acessar uma unidade mapeada por lettter quando é “Run as…”

5

Problema

Eu tenho o Windows XP SP3 aqui no VMWare, uma instalação completamente nova, com apenas um monte de aplicativos (Navegadores, Office) instalados.

Quando eu:

  1. Faça login como administrador local
  2. Usando a GUI do Explorer, conecto um servidor remoto como X:
  3. Inicie o "prompt de comando" pelo link do menu Iniciar:: a) iniciando o link manualmente
    b) clicando com o botão direito do mouse no link, escolhendo "Executar como ..." e preenchendo as credenciais do mesmo usuário

o primeiro caso funciona bem, mas no segundo, cmd.exe não pode acessar X: :

C:\Documents and Settings\Administrator>net use
New connections will be remembered.


Status       Local     Remote                    Network

-------------------------------------------------------------------------------
Unavailable  X:        \server\share\folder      Microsoft Windows Network
The command completed successfully.

C:\Documents and Settings\Administrator>x:
The system cannot find the drive specified.

C:\Documents and Settings\Administrator>dir x:\
The system cannot find the path specified.

C:\Documents and Settings\Administrator>

Pré-análise

Eu comparei várias propriedades que pude encontrar sobre os processos (não tenho certeza de que todas são relevantes): ambiente, identificadores abertos, DLLs abertas, guia "Segurança" no Process Explorer e todas elas são as mesmas .

Uma coisa que descobri é que, ao assistir a uma tentativa com o Process Monitor, a próxima etapa faz mais quatro etapas:

"Time of Day","Process Name","PID","Operation","Path","Result","Detail"
"10:55:33.4784227 AM","cmd.exe","2792","RegOpenKey","HKCU","SUCCESS","Desired Access: Maximum Allowed"
"10:55:33.4785212 AM","cmd.exe","2792","RegOpenKey","HKCU\Software\Policies\Microsoft\Control Panel\Desktop","NAME NOT FOUND","Desired Access: Read"
"10:55:33.4785569 AM","cmd.exe","2792","RegOpenKey","HKCU\Control Panel\Desktop","SUCCESS","Desired Access: Read"
"10:55:33.4786210 AM","cmd.exe","2792","RegQueryValue","HKCU\Control Panel\Desktop\MultiUILanguageId","NAME NOT FOUND","Length: 256"
"10:55:33.4786650 AM","cmd.exe","2792","RegCloseKey","HKCU\Control Panel\Desktop","SUCCESS",""
"10:55:33.4787131 AM","cmd.exe","2792","RegCloseKey","HKCU","SUCCESS",""
"10:55:33.4912359 AM","cmd.exe","2792","CreateFile","X:","SUCCESS","Desired Access: Read Data/List Directory, Synchronize, Disposition: Open, Options: Directory, Synchronous IO Non-Alert, Attributes: n/a, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened"
"10:55:33.4924104 AM","cmd.exe","2792","QueryNameInformationFile","X:","SUCCESS","Name: \server\share\folder"
"10:55:33.4924860 AM","cmd.exe","2792","QueryInformationVolume","X:","SUCCESS","VolumeCreationTime: 9/6/2005 2:05:04 PM, VolumeSerialNumber: 109F-0912, SupportsObjects: True, VolumeLabel: DATA"
"10:55:33.4932539 AM","cmd.exe","2792","CloseFile","X:","SUCCESS",""
"10:55:33.4937810 AM","cmd.exe","2792","RegOpenKey","HKCU","SUCCESS","Desired Access: Maximum Allowed"
"10:55:33.4939097 AM","cmd.exe","2792","RegOpenKey","HKCU\Software\Policies\Microsoft\Control Panel\Desktop","NAME NOT FOUND","Desired Access: Read"
"10:55:33.4939451 AM","cmd.exe","2792","RegOpenKey","HKCU\Control Panel\Desktop","SUCCESS","Desired Access: Read"
"10:55:33.4940098 AM","cmd.exe","2792","RegQueryValue","HKCU\Control Panel\Desktop\MultiUILanguageId","NAME NOT FOUND","Length: 256"
"10:55:33.4940548 AM","cmd.exe","2792","RegCloseKey","HKCU\Control Panel\Desktop","SUCCESS",""
"10:55:33.4941023 AM","cmd.exe","2792","RegCloseKey","HKCU","SUCCESS",""

Os passos CreateFile, Query * e CloseFile estão faltando no log da falha.

Pergunta

O que pode causar essa discrepância? Isso é um bug?

    
por Alois Mahdal 19.01.2012 / 14:57

2 respostas

6

A partir do Windows XP, cada Sessão de logon da LSA ( não relacionada ao Terminal Sessões de serviços) tem o seu próprio conjunto atribuições de letra de unidade. Se você usar Executar como ... - se a conta for igual ou diferente - a função ainda criará uma sessão de logon separada com as credenciais fornecidas.

Mais:

por 19.01.2012 / 15:24
0

Porque as unidades mapeadas estão em um! PER USER! base, o outro usuário (o que você faz o RUN AS como) não pode vê-lo!

Para ganhar, você precisa tentar mapear uma unidade em um lote que está sendo executado como o usuário primeiro.

    
por 19.01.2012 / 14:59