Compartilhe a pasta do arquivo em lotes sem solicitar direitos de administrador e UAC

2

Eu gostaria de executar um arquivo em lotes em um computador remoto que compartilhe uma determinada pasta com todos. Tem que fazer isso

  • sem pedir direitos de administrador de forma alguma
  • sem exibir a caixa de diálogo UAC
  • sem reiniciar

Até agora eu tenho esse script, mas ele continua me dando a caixa de diálogo do UAC.

SET __COMPAT_LAYER=WINXPSP3
if _%1_==_payload_  goto :payload

:getadmin
    echo %~nx0: elevating self
    set vbs=%temp%\getadmin.vbs
    echo Dim WshShell, WshEnv >> "%vbs%"
    echo Set WshShell = CreateObject^("WScript.Shell"^) >> "%vbs%"
    echo Set WshEnv = WshShell.Environment^("PROCESS"^) >> "%vbs%"
    echo WshEnv.Item^("__COMPAT_LAYER"^) = "WINXPSP3" >> "%vbs%"
    echo Set UAC = CreateObject^("Shell.Application"^)                >> "%vbs%"
    echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 1 >> "%vbs%"
    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
goto :eof

:payload
    echo %~nx0: running payload with parameters:
    echo %*
    echo ---------------------------------------------------
    cd /d %2
    shift
    shift
    rem put your code here
    rem e.g.: perl myscript.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
    SET __COMPAT_LAYER=WINXPSP3
    net share MyShare=c:\MyShare /grant:everyone,full
goto :eof
Ádám Bozzay
fonte
Adam - Considere colocar a lógica da :getadminseção VBS em um script VBS real com valores estáticos e solucione o problema para começar. É provável que haja um problema com o script VB e não seja realmente um lote. Se você puder criar um script VB e tornar os valores estáticos para confirmar que ele tem o mesmo comportamento, poderá obter melhor ajuda colocando a lógica no VB nesta postagem e marque-o vbscript. As partes do lote podem ser irrelevantes para o problema real, de modo que possam distrair as pessoas e não serem necessárias para solucionar o problema. Apenas uma dica amigável que pode ajudar!
Pimp Juice IT