Usuario del software
2014-07-28 03:24:17 +0000 2014-07-28 03:24:17 +0000
50

¿Es posible ejecutar automáticamente un archivo por lotes como administrador

Me pregunto si es posible abrir automáticamente un archivo por lotes como administrador cuando se hace doble clic en el archivo por lotes, porque los comandos deben ejecutarse con derechos de administrador.

Nota: Ya conozco la solución de hacer clic con el botón derecho del ratón en el archivo y hacer clic en Run As Administrator, pero no es una solución automática.

Respuestas [9]

45
2014-07-28 03:43:30 +0000

Sí, puedes ejecutar un archivo por lotes con derechos administrativos. Desafortunadamente, no puedes hacer esto directamente desde el archivo por lotes. Tendría que crear primero un atajo de ese archivo por lotes y cambiar las propiedades de ese atajo para que esto funcione.

Para crear un atajo, hay muchas maneras, pero la más simple y rápida es usando la opción Enviar a en el menú contextual.

Right click batch file > Send to > Desktop (create shortcut)

Por supuesto que puede enviar el atajo a donde quiera. Para elevar el archivo por lotes para que se ejecute como administrador, sigue los siguientes pasos:

  1. Haga clic con el botón derecho del ratón en el atajo que acaba de crear (debería estar en el escritorio o donde quiera que lo envíe)
  2. 2. En la pestaña de accesos directos, haga clic en el botón Avanzado...
  3. Haga clic en el botón de la barra de herramientas. 3. Marque la casilla Ejecutar como administrador y pulse OK tanto en la ventana modal como en la ventana principal de propiedades. 4. Ejecute el atajo haciendo doble clic en él y el archivo por lotes debería ejecutarse como administrador.
45
33
2014-12-15 16:55:24 +0000

Como se publicó en una respuesta por Ben Gripka a otra pregunta:

REM --add the following to the top of your bat file--

@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"
:--------------------------------------
33
5
2015-02-10 14:25:39 +0000

en Windows 7

  1. Crear un atajo a ese archivo Batch

  2. Haga clic con el botón derecho del ratón en el archivo de acceso directo

  3. Haga clic en botón de avance para encontrar una casilla de verificación para ejecutarse como administrador

Marque la captura de pantalla de abajo

Screenshot

5
4
2014-10-07 18:42:22 +0000

La respuesta aceptada sí funciona. Pero descubrí que en Windows 7, tenía que soportar el diálogo de UAC cada vez que se hace clic en el atajo. Este IMHO le resta importancia al "automáticamente" en esta pregunta!

Entonces descubrí que en mi propia situación, el archivo .bat en cuestión debe ser ejecutado por el Programador de Tareas. En este caso, marcando la opción Run with highest privileges en la pestaña General de la tarea, se encarga amablemente del problema. El .bat se ejecuta entonces como administrador sin ningún tipo de problemas.

PD: No me di cuenta que no podía subir imágenes en esta respuesta, ¡porque tengo una pequeña y agradable captura de pantalla sentada justo a mi lado ahora! ¿O puedo hacerlo?

4
3
2015-05-31 14:49:17 +0000

Puedes usar mi script Batch_Admin para elevar automáticamente al Administrador para su uso en cualquier tipo de script propio de Batch, o BAT o .CMD. Esta función asegura el trabajo en un entorno estándar, con herramientas estándar y de la misma manera en diferentes sistemas Windows. Utiliza varios comandos estándar e incorporados de Windows. No utilice ningún otro script externo. Se puede usar para llamar a cualquier programa como Administrador, no sólo a los scripts Batch. Basta con crear un pequeño script, que luego llama al programa que requiere permiso de Administartor. Colóquelo en cualquier carpeta de búsqueda PATH (desde %PATH%).

Para usarlo, simplemente inserte la siguiente línea (exactamente como) en su script Batch padre, que debe ser ejecutado como Administrador. Esto se hace mejor en la parte superior de nuestro script padre y es mejor que primero, que será llamado a través del CALL más adelante, algunos sub-scripts (ver explicación detallada más abajo).

net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*

Esto puede ser insertado dentro de cualquier script hijo, llamado por la sintaxis CALL. Para mostrar un mensaje mientras está todavía no tiene privilegios de Administrador, por ejemplo, durante 5 segundos antes de llamar a Batch_Admin establece la variable "ShowAdminInfo" en el número de segundos

SET ShowAdminInfo=5
net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*

Así que cómo funciona:

  • Llama a UAC. ShellExecute a través de VBScript para recoger los permisos de usuario

  • Ejecuta el script por lotes, o BAT o CMD

  • El llamador del script puede tener un largo espacio para el nombre incluido en la llamada entre comillas

  • Devuelve todos los parámetros llama al script maestro pasado desde la línea de comandos, como si no hubiera transmisión de la llamada e inicia algo desde cero, también con caracteres especiales, como signos de exclamación (! ) y porcentaje (%), y también con paréntesis ()

  • Contiene una ubicación del master script si la llamada tuvo lugar en el directorio donde este script es el master

  • Auxiliar muestra un mensaje si ponemos ante nosotros la variable "ShowAdminInfo", por ejemplo, durante 5 segundos lo que puede impedir el paso inmediato de los derechos del Administrador dando información adicional y la posibilidad de una decisión informada. Ejemplos de ajustes que deben ser establecidos: SET ShowAdminInfo=5 Por defecto, debido a que esta variable no está definida, no se muestra.

  • El script está llamando también en la ruta de búsqueda del sistema % PATH% y desde el recurso de red, como: \Computadora\compartir.bat

  • Evita malentendidos al escribir los archivos auxiliares necesarios cuando el script llama a varios Batch_Admin casi al mismo tiempo. Utiliza el número aleatorio del 1 al 100

  • Pero, lo mejor es usarlo en el script padre. La transición a los derechos de Administrador siempre requiere que se ejecute el script completamente de nuevo, en una nueva ventana, en un nuevo entorno, sin recurrir a las variables establecidas previamente en nuestro script y los valores de estas variables no pasaban entonces a la llamada como Administrador. Sólo el script se ejecutará de nuevo.

Debajo de un completo script Batch_Admin. Información extendida sobre esto está en mi sitio.

Copia el siguiente texto en el Bloc de Notas y guárdalo en el disco como: Batch... Admin... Bat...

3
1
2014-07-28 14:33:06 +0000

Alternativamente podría crear un segundo archivo por lotes, esto podría permitirle ejecutar cualquier cosa como un administrador, mientras que sólo se introduce la contraseña de administrador una vez. La contraseña se guarda en un token de autenticación, y requiere que un ordenador real sepa cómo crackearla.

runas /savecred /user:(domain)\(admin user) "(file path to exe,bat,whatever)"
1
0
2015-11-25 07:07:27 +0000

Es un ejemplo para ejecutar el murciélago como administrador. Funciona para mí.

Va así:

if "%~s0"=="%~s1" ( cd %~sp1 & shift ) else (
  echo CreateObject^("Shell.Application"^).ShellExecute "%~s0","%~0 %*","","runas",1 >"%tmp%%~n0.vbs" & "%tmp%%~n0.vbs" & del /q "%tmp%%~n0.vbs" & goto :eof
)
:eof
start Cmd /k "netsh wlan show profile"
pause 
0
0
2015-11-11 09:50:46 +0000

Puedes usar una utilidad de línea de comando elevate . (enlace de descarga - https://drive.google.com/open?id=0Bz7qe_olclTwVGZLUklFMHNxQ00 )

Usage: Elevate [-?|-wait|-k] prog [args]
-? - Shows this help
-wait - Waits until prog terminates
-k - Starts the the %COMSPEC% environment variable value and
                executes prog in it (CMD.EXE, 4NT.EXE, etc.)
prog - The program to execute
args - Optional command line arguments to prog
0