Como acessar os compartilhamentos de rede de um processo elevado no Windows 7?

5

Com o UAC configurado para o nível Padrão , não é possível no Windows 7 acessar pastas de rede mapeadas de um prompt de comando administrativo ou qualquer outro processo elevado.

Isso leva a erros indesejados, por exemplo, ao tentar importar um arquivo * .reg localizado em um compartilhamento de rede. Clicar duas vezes resulta na seguinte mensagem de erro bastante confusa depois de aceitar o prompt do UAC:

Cannot import M:\sharename\settings.reg: Error opening the file. There may be a disk or file system error.

É possível ter os compartilhamentos de rede já mapeados disponíveis ao executar com elevação? Ou há uma solução para esse comportamento?

Atualização: Eu sei que funciona para abrir um prompt de comando administrativo e montar as unidades usando net use . Isso torna o compartilhamento disponível para todos os processos elevados; no entanto, isso não é persistente e precisa ser repetido após cada logon.

    
por 0xA3 05.02.2010 / 15:03

4 respostas

3

Em suma, não. Não há maneira compatível de copiar o conjunto atual de recursos de rede mapeados / autenticados de um contexto não elevado para seu contexto elevado. Para todos os efeitos, são logins separados com os quais você pode interagir com o mesmo console. Ser capaz de se comunicar entre processos elevados e não elevados iria quebrar o propósito de segurança de mantê-los separados.

No entanto, se essas unidades de rede forem montadas usando as credenciais de sua conta de usuário (e não um login / senha separado), você poderá tentar apenas acessá-las com o caminho UNC em vez de um mapeamento de unidade real.

    
por 05.02.2010 / 19:41
8

Não é suportado, mas você pode definir EnableLinkedConnections no registro para conseguir isso. Consulte o link

Embora a Microsoft declare que isso "pode tornar seu sistema inseguro", ainda estamos aguardando detalhes sobre isso aqui: link

    
por 04.03.2010 / 00:25
2

Eu montei um VBScript simples que mapeia as unidades que são mapeadas na sessão atual novamente para a sessão de administrador elevada. Depois de executar o script, as unidades mapeadas estão disponíveis para todos os processos elevados. Isso funciona se o usuário atual já for um administrador local:

Option Explicit
Dim objNetwork, objShell
Dim strDriveLetter, strNetworkPath
Dim colDrives, intDrive, strDrives


If WScript.Arguments.length =0 Then
    Set objNetwork = CreateObject("WScript.Network")
    Set colDrives = objNetwork.EnumNetworkDrives

    For intDrive = 0 To (colDrives.Count -1) Step 2
        WScript.Echo colDrives.Item(intDrive) & " is mapped to: " & colDrives.Item(intDrive + 1)
        If Len(strDrives) > 0 Then strDrives = strDrives & " "
        strDrives = strDrives & " " & Chr(34) & colDrives.Item(intDrive) & Chr(34) &  " " & Chr(34) & colDrives.Item(intDrive + 1) & Chr(34) 
    Next

  If Len(strDrives) > 0 Then
      ' re-call script with elevation
      Set objShell = CreateObject("Shell.Application")
      objShell.ShellExecute "cscript.exe", Chr(34) & WScript.ScriptFullName & Chr(34) & strDrives, "", "runas", 1
    Else
        WScript.Echo "No drives Mapped."
    End If

Else
  ' elevated part
  Set objNetwork = CreateObject("WScript.Network")

  For intDrive = 0 To (WScript.Arguments.Count - 1) Step 2
        WScript.Echo WScript.Arguments(intDrive) & " is mapped to: " & WScript.Arguments(intDrive + 1)
        On Error Resume Next ' ignore already mapped drives
        objNetwork.MapNetworkDrive WScript.Arguments(intDrive), WScript.Arguments(intDrive + 1)
        On Error GoTo 0
    Next

End If
    
por 15.02.2010 / 14:36
1

A configuração de registro '' EnableLinkedConnections '' nunca funcionou para mim no Windows 7 (PC corporativo). Tentei de várias maneiras sem sucesso.

Ele tentou o script de 0xA3 e funciona sem falhas . Obrigado por isso.

Para executá-lo automaticamente, basta escrever o script em um arquivo (como remount-admin.vbs) e salvar esse arquivo em C: \ ProgramData \ Microsoft \ Windows \ Menu Iniciar \ Programas \ Startup.

    
por 30.10.2013 / 15:22