Arquivo em lote para executar programas como administrador - erro 740

Arquivo em lote para executar programas como administrador - erro 740

Estou trabalhando em um pequeno script em lote que eleva programas básicos do Windows para serem executados como administrador.

Todas as funções funcionam bem, mas tive um problema ao tentar executar o "regedit.exe".

Quando a opção 3 é selecionada no script e deve executar o regedit como administrador, recebo um erro:

740: A operação solicitada requer elevação.

Aqui está o roteiro:

echo off
cls
echo.
echo Start as admin:
echo /----------------\
echo # 1. CMD         #
echo # 2. Task Manager#
echo # 3. Regedit     #
echo # 0. Exit        #
echo \----------------/
echo.

set /p run=

if %run%==1 (
set run="cmd"
)

if %run%==2 (
set run="taskmgr"
)

if %run%==3 (
set run="regedit"
)

if %run%==0 (
exit
)

runas /savecred /user:admin %run%

Existe uma solução alternativa para isso?

Gostaria que isso funcionasse sem instalar programas de terceiros, modificar o registro ou desabilitar o UAC.

Responder1

Você pode fazer isso iniciando um novo prompt CMD com RunAs, que você informa para iniciar seu comando.

Para fazer isso em seu lote, altere a última linha para:

runas /savecred /user:admin "cmd /c %run%"

Responder2

Add this to the top of your Batch file and at the end just put %run% instead of (runas /savecred /user:admin %run%)


@echo off

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

Responder3

Talvezessepode ajudar, ou talvez iniciar o lote inteiro como administrador pode ajudar, criando outro script em lote contendo:

runas /user:admin C:\Path_to_your_batch_file\name.bat

Responder4

  1. Clique com o botão direito em C:\Windows\regedit.exe e escolha Propriedades
  2. Na guia Compatibilidade, escolha "Executar este programa como administrador"

informação relacionada