Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: snow915 en 17 Julio 2017, 00:50 am



Título: Se puede ejecutar un .bat como admin automaticamente?
Publicado por: snow915 en 17 Julio 2017, 00:50 am
Alguien sabe si se puede y como ejecutar un archivo Batch para que inicie como administrador automaticamente?? Sin necesidad de darle clic derecho y ejecutar como admin...


Título: Re: Se puede ejecutar un .bat como admin automaticamente?
Publicado por: Ancasu en 17 Julio 2017, 01:18 am
hola, "crontab"


Título: Re: Se puede ejecutar un .bat como admin automaticamente?
Publicado por: engel lex en 17 Julio 2017, 01:24 am
hola, "crontab"

windows tiene crontab?


Título: Re: Se puede ejecutar un .bat como admin automaticamente?
Publicado por: Eleкtro en 17 Julio 2017, 02:45 am
windows tiene crontab?

La respuesta es NO, al menos no como tal. El equivalente en Windows serían las tareas programadas del sistema, archivo: TaskSchd.msc, pudiendo además utilizar su versión CLI, archivo: SchTasks.exe para crear, modificar y eliminar tareas de forma programática, pero SchTasks no puede ayudar en nada a la pregunta que el usuario ha formulado, a menos que la intención fuese iniciar el script con privilegios de administrador a una hora determinada o al inicio de sesión del usuario o cuando se produjese otro evento específico en el sistema operativo.

Una solución sencilla de implementar sería utilizando el comando externo RunAs.exe, declarando en el script un argumento que sirva como señal para determinar si el script necesita "reiniciarse" usando el comando RunAs para obtener privilegios de administrador. Puedes intentar probar así:

( Lo escribí al vuelo, no lo he testeado por tener el UAC desactivado. De todas formas en Google deberías poder encontrar miles de ejemplos parecidos al mio. )
Código
  1. @Echo OFF
  2.  
  3. Set "accountName=Administrador"
  4.  
  5. Set "elevatedArg=%~1"
  6. If "%elevatedArg%" NEQ "elevated" (
  7.    Start "" CMD /K "RunAs.exe /User:"%accountName%" "CMD.exe /C \"\"%~f0\" \"elevated\"\"""
  8.    Exit /B 1
  9. )
  10.  
  11. :: Tu código aquí...
  12.  
  13. Exit /B 0

...Sin embargo, esta metodología de "reiniciar el script" con RunAs tiene un contratiempo, y es que es necesario introducir la contraseña manualmente, es así por defecto, no se puede ignorar este paso por motivos de seguridad en Windows/RunAs.

Si te resulta incómodo tener que escribir el password cada vez, entonces puedes optar por otras soluciones alternativas, de código... pero son mucho más tediosas, como por ejemplo esta:
  • How can I auto-elevate my batch file, so that it requests from UAC administrator rights if required? | StackOverflow (https://stackoverflow.com/a/12264592/1248295)

O también puedes utilizar herramientas de terceros como el comando "Elevate" de la aplicación command´line NirCMD (lo que te ahorraría muchos quebraderos de cabeza, pero dependerías de aplicacioens de terceros):
  • http://nircmd.nirsoft.net/elevate.html

...Y también puedes hacerlo con alguna aplicación del paquete PSTools, pero no recuerdo ahora mismo exactamente cual era, ¿PSExec.exe quizás?, puedes buscarlo en Google.
  • https://technet.microsoft.com/en-us/sysinternals/pstools.aspx

Saludos.