Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/09/2010, 06:11
Avatar de dogduck
dogduck
 
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 10 meses
Puntos: 19
Respuesta: Impedir que se cierre una aplicación en Win XP

Bueno, me he tomado el tema de este post como ejercicio y he conseguido una solución más elegante.
La tengo en Ejecutar un script como servicio en windows

Cita:

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