none
Executar comando CMD via VBS como administrador RRS feed

  • Pergunta

  • Olá, tenho um bat que executa os seguintes comandos:

    route delete 10.2.0.0
    route add  10.2.0.0 mask 255.255.0.0 192.168.11.2

    Gostaria de executar esses comando em um VBS com privilégios de administrador.

    Ou criar um VBS que execute o bat com usuário administrador, sem que o usuário veja a sua execução.

    terça-feira, 31 de dezembro de 2019 21:59

Todas as Respostas

  • Olá, vou te mostrar 2 maneiras de pedir elevação de dentro do batch. Uma é usando VBS e outra usando Powershell:

    Usando VBS:

    @echo off CLS ECHO. :init setlocal DisableDelayedExpansion set "batchPath=%~0" for %%k in (%0) do set batchName=%%~nk set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs" setlocal EnableDelayedExpansion :checkPrivileges NET FILE 1>NUL 2>NUL

    if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) :getPrivileges if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges) ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%" ECHO args = "ELEV " >> "%vbsGetPrivileges%" ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%" ECHO args = args ^& strArg ^& " " >> "%vbsGetPrivileges%" ECHO Next >> "%vbsGetPrivileges%" ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%" "%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %* exit /B :gotPrivileges setlocal & pushd . cd /d %~dp0 if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1) echo Tudo que e executdo aqui sera executado com elevacao pause


    Usando Powershell:

    @echo off 
    chcp 1252
    net session >nul 2>&1 || (powershell start -verb runas '%~0' &exit /b)
    
    echo Tudo que será executado aqui será executado como administrador
    echo.
    pause
    Como você pode ver usando powershell é bem mais simples mais eu notei que demora um pouco mais com o powershell..


    R. Bohner

    quarta-feira, 1 de janeiro de 2020 22:00
  • Olá, 

    você pode configurar seu script numa task scheduler e marcar a opção de executar com privilégios elevados.

    sexta-feira, 3 de janeiro de 2020 13:09