serlo puedo linea ejecutar desde cómo como comandos cambiar bat automaticamente administrador abrir cmd windows-7 windows-vista

puedo - ejecutar.bat desde cmd



¿Cómo ejecuta un comando como administrador desde la línea de comandos de Windows? (8)

Aunque el código de @amr ali era genial, tuve una instancia en la que mi archivo bat contenía > < signos, y se atragantó con ellos por alguna razón.

Encontré esto en su lugar. Solo póngalo todo antes de su código, y funciona perfectamente.

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" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%/getadmin.vbs" "%temp%/getadmin.vbs" exit /B :gotAdmin if exist "%temp%/getadmin.vbs" ( del "%temp%/getadmin.vbs" ) pushd "%CD%" CD /D "%~dp0" :--------------------------------------

Tengo un pequeño script que realiza el proceso de compilación e instalación en Windows para un repositorio de Bazaar que estoy administrando. Estoy intentando ejecutar el script con privilegios administrativos elevados desde el shell de Windows (cmd.exe), como si hubiera hecho clic con el botón derecho y se hubiera elegido Ejecutar como administrador , pero sin usar ningún método que requiera el uso de La interfaz gráfica.


Configuraré un acceso directo, ya sea a CMD o a lo que desea ejecutar, luego estableceré las propiedades del acceso directo para que requieran administración y luego ejecutará el acceso directo desde su archivo por lotes. No he probado para confirmar que respetará las propiedades, pero creo que es más elegante y no requiere activar la cuenta de Administrador.

Además, si lo hace como una tarea programada (que se puede configurar desde el código), hay una opción para ejecutarla allí.


Presiona el botón de inicio. En el cuadro de búsqueda, escriba "cmd", luego presione Ctrl + Shift + Enter


Todo lo que tiene que hacer es usar el comando runas para ejecutar su programa como Administrador (con una advertencia).

runas /user:Administrator "cmdName parameters"

En mi caso, esto fue

runas /user:Administator "cmd.exe /C %CD%/installer.cmd %CD%"

Tenga en cuenta que debe usar comillas, de lo contrario, el comando runas engullirá la opción de cambio a cmd.

También tenga en cuenta que el shell administrativo (cmd.exe) se inicia en la carpeta C: / Windows / System32. Esto no es lo que quería, pero fue lo suficientemente fácil como para pasar la ruta actual a mi instalador y hacer referencia a ella usando una ruta absoluta.

Advertencia: habilitar la cuenta de administrador

El uso de runas de esta manera requiere que la cuenta administrativa esté habilitada, que no es la predeterminada en Windows 7 o Vista. Sin embargo, here hay un gran tutorial sobre cómo habilitarlo, de tres maneras diferentes:

Yo mismo lo habilité abriendo Herramientas administrativas , Política de seguridad local , luego navegando a Políticas locales / Opciones de seguridad y cambiando el valor de la Política de estado de cuenta administrativa: Cuentas , que no es ninguna de las tres formas mostradas en el enlace.

Una forma aún más fácil:

C:> net user Administrator /active:yes


Truco de tubería simple, || , con algunos .vbs utilizados en la parte superior de su lote. Saldrá regular y se reiniciará como administrador.

@AT>NUL||echo set shell=CreateObject("Shell.Application"):shell.ShellExecute "%~dpnx0",,"%CD%", "runas", 1:set shell=nothing>%~n0.vbs&start %~n0.vbs /realtime& timeout 1 /NOBREAK>nul& del /Q %~n0.vbs&cls&exit

También del /Q el temp.vbs cuando se termina de usarlo.


Un híbrido por lotes / WSH puede llamar a ShellExecute para mostrar el diálogo de elevación de UAC ...

@if (1==1) @if(1==0) @ELSE @echo off&SETLOCAL ENABLEEXTENSIONS >nul 2>&1 "%SYSTEMROOT%/system32/cacls.exe" "%SYSTEMROOT%/system32/config/system"||( cscript //E:JScript //nologo "%~f0" @goto :EOF ) echo.Performing admin tasks... REM call foo.exe @goto :EOF @end @ELSE ShA=new ActiveXObject("Shell.Application") ShA.ShellExecute("cmd.exe","/c /""+WScript.ScriptFullName+"/"","","runas",5); @end


Vaya a C:/windows/System32 y haga clic derecho en cmd.exe y ejecute como Administrador. Trabajó para mí en Windows 7.

Si está intentando ejecutar un script con privilegios elevados, podría hacer lo mismo para el archivo de script o utilizar la ejecución del programador como una opción de usuario diferente para ejecutar el script.


:: ------- Self-elevating.bat -------------------------------------- @whoami /groups | find "S-1-16-12288" > nul && goto :admin set "ELEVATE_CMDLINE=cd /d "%~dp0" & call "%~f0" %*" findstr "^:::" "%~sf0">temp.vbs cscript //nologo temp.vbs & del temp.vbs & exit /b ::: Set objShell = CreateObject("Shell.Application") ::: Set objWshShell = WScript.CreateObject("WScript.Shell") ::: Set objWshProcessEnv = objWshShell.Environment("PROCESS") ::: strCommandLine = Trim(objWshProcessEnv("ELEVATE_CMDLINE")) ::: objShell.ShellExecute "cmd", "/c " & strCommandLine, "", "runas" :admin ------------------------------------------------------------- @echo off echo Running as elevated user. echo Script file : %~f0 echo Arguments : %* echo Working dir : %cd% echo. :: administrator commands here :: e.g., run shell as admin cmd /k

Para una demostración: self-elevating.bat "ruta con espacios" arg2 3 4 "otro argumento largo"

Y esta es otra versión que no requiere la creación de un archivo temporal.

<!-- : --- Self-Elevating Batch Script --------------------------- @whoami /groups | find "S-1-16-12288" > nul && goto :admin set "ELEVATE_CMDLINE=cd /d "%~dp0" & call "%~f0" %*" cscript //nologo "%~f0?.wsf" //job:Elevate & exit /b --> <job id="Elevate"><script language="VBScript"> Set objShell = CreateObject("Shell.Application") Set objWshShell = WScript.CreateObject("WScript.Shell") Set objWshProcessEnv = objWshShell.Environment("PROCESS") strCommandLine = Trim(objWshProcessEnv("ELEVATE_CMDLINE")) objShell.ShellExecute "cmd", "/c " & strCommandLine, "", "runas" </script></job> :admin ----------------------------------------------------------- @echo off echo Running as elevated user. echo Script file : %~f0 echo Arguments : %* echo Working dir : %cd% echo. :: administrator commands here :: e.g., run shell as admin cmd /k