Archivo por lotes para ejecutar programas como administrador - error 740

Archivo por lotes para ejecutar programas como administrador - error 740

Estoy trabajando en un pequeño script por lotes que eleva los programas básicos de Windows para ejecutarlos como administrador.

Todas las funciones funcionan bien, pero me encontré con un problema al intentar ejecutar "regedit.exe".

Cuando se selecciona la opción 3 en el script y debería ejecutar regedit como administrador, aparece el error:

740: La operación solicitada requiere elevación.

Aquí está el guión:

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%

¿Hay una solución para esto?

Me gustaría que esto funcione sin instalar programas de terceros, modificar el registro o deshabilitar UAC.

Respuesta1

Puede lograrlo iniciando un nuevo indicador CMD con RunAs, al que le indica que inicie su comando.

Para hacer esto en su lote, cambie la última línea a:

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

Respuesta2

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"
:--------------------------------------

Respuesta3

Tal vezestepuede ayudar, o tal vez iniciar todo el lote como administrador puede ayudar, creando otro script por lotes que contenga:

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

Respuesta4

  1. Haga clic derecho en C:\Windows\regedit.exe y elija Propiedades
  2. En la pestaña Compatibilidad, elija "Ejecutar este programa como administrador".

información relacionada