Você pode ativá-lo iniciando um novo prompt do CMD com RunAs, que informa para iniciar seu comando.
Para fazer isso no seu lote, altere a última linha para:
runas /savecred /user:admin "cmd /c %run%"
Estou trabalhando em um script em lote pequeno que eleva os programas básicos do Windows para serem executados como administrador.
Todas as funções funcionam bem, mas eu tive um problema ao tentar executar o "regedit.exe".
Quando a opção 3 é selecionada no script e deve executar o regedit como admin, recebo o erro:
740: The requested operation requires elevation.
Aqui está o script:
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 para isso?
Eu gostaria de fazer isso funcionar sem instalar programas de terceiros, modificando o registro ou desativando o UAC.
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"
:--------------------------------------
Talvez este pode ajudar, ou talvez iniciar o lote inteiro como o administrador pode ajudar, criando outro script em lote contendo:
runas /user:admin C:\Path_to_your_batch_file\name.bat