Ejecutar un script como servicio en windows
O
Crear servicio en windows basado en script:
Se trata de crear un servicio que se encargue de lanzar un script que vigila o controla si existe un proceso y si no existe el proceso lo lanza.
Escenario:
* Windows XP SP3
Requisitos:
* instsrv.exe: Windows Server 2003 Resource Kit Tools
* srvany.exe: Windows Server 2003 Resource Kit Tools
* script cmd: Batch Scripting: script para impedir que se cierre una aplicación o proceso
Implementación del servicio:
* Copio las utilidades instsrv.exe y srvany.exe, en la carpeta de trabajo ( e:\Servicios )
* Inicio > ejecutar > cmd > e: > cd Servicios
E:\Servicios>instsrv.exe “Nocerrar” e:\Servicios\srvany.exe
He creado el Servicio llamado Nocerrar, se crea por defecto como tipo de Inicio Automático y como inicio de sesión como Sistema Local
Ahora lo parametrizamos o configuramos o personalizamos:
* Ejecutamos el regedit y navegamos hasta la rama:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servic es\Nocerrar
* Añadimos nueva clave a Nocerrar, y la llamamos Parameters
* Añadimos un valor alfanumérico a Parameters, llamado Application
* Damos a Application como valor, el Path o ruta al script que deseamos que corra como un servicio
en mi caso el path o ruta al script es: e:\Servicios\nocerrar.cmd
* Iniciamos el servicio desde consola cmd
e:\Servicios\ net start nocerrar
El script nocerrar.cmd, se encarga de monitorizar si el proceso notepad.exe esta corriendo y si no se esta ejecutando lo lanza.
view source
print?
1 @echo off
2 :inicio
3 set proceso=notepad.exe
4 set ERRORLEVEL=
5 tasklist | findstr %proceso%
6 if ERRORLEVEL==1 start %proceso%
7 rem delay de 5 sg
8 @ping -n 5 127.0.0.1 > null
9 goto inicio
Observamos en el task manager o administrador de tareas que se ha iniciado en background (de forma no visible) el proceso notepad.exe. Si finalizamos el proceso notepad.exe, al cabo de unos 5 sg, se vuelve a iniciar, así hasta que paremos el servicio ( c:\> net stop nocerrar )
En lugar del proceso notepad.exe, podemos poner aquel que deseemos, incluso con parámetros. Todo queda a la imaginación del usuario.
Para eliminar el servicio:
e:\Servicios\INSTSRV nocerrar REMOVE