[BATCH] Problema al ejecutar servicios windows

Iniciado por Baphonet, 30 Septiembre 2008, 21:56 PM

0 Miembros y 1 Visitante están viendo este tema.

Baphonet

He utilizado el comando "sc create" para que un programa bat se pudiera ejecutar como un servicio de windows.
Pero no he conseguido que se ejecute como tal. Con "sc create" he conseguido que el archivo bat apareciera en el registro como un servicio y en el panel de servicios en herramientas administrativas.

Este servicio teoricamente se puede ejecutar manualmente tanto en el panel de servicios como con la orden "sc start" pero al hacerlo me da el error:" 1053:el servicio no ha respondido a la peticion o inicio del control en un tiempo adecuado".

Podeis ayudarme y decirme donde esta el fallo, es que me he equivocado en la utilizacion de los comandos o es que no cualquier programa se puede transformar en un servicio.

Saludos.

Lambda

que yo sepa los servicios de windows tienen que "responder" al SC Manager de su estado en 30 segundos si no lo elimina, para ello tiene q llamar a la api RegisterServiceCtrlHandler y despues SetServiceStatus y ponerle SERVICE_RUNNING, si no el service manager lo marca como "timeout" en 30 segundos y lo elimina.


Baphonet

Entonces para poder hacer que un programilla funcione como servicio de windows que tendria que hacer?

cualquierita

Para lo que tu quieres existe una herramienta que se llama ServiceInstaller.
En este post

http://nodejodeaprender.blogspot.com/2008/10/como-instalar-un-servicio-de-windows-de.html

explican como conseguirla y la forma de usarla.
Espero que te sirva.

Baphonet

Gracias, por el consejo lo voy a probar.
Pero a mi me interesaba mas como hacerlo con los comandos del shell de windows, ya que estoy aprendiendo a utilizarlo.

Al final el posible fallo fue poner como servicio un bat, cuando coloco un exe me sigue dando error pero el programa logra ejecutarse.

Seguire indagando y probando 
Saludos

cualquierita

Igual no te he entendido bien. Si vas a crear un servicio desde el shell, el ejecutable que se convierta en tu servicio, debe estar preparado para ejecutarse como tal. No cualquier .exe puede convertirse en un servicio por arte de magia usando el comando sc.

Si el .exe lo has hecho tu, por ejemplo en c usando el vc++ aquí tienes un ejemplo de como crear proyecto que luego te sirva para ejecutarlo como servicio usando el sc.

http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

Si lo que tienes es un .exe que no has programado tu ni tienes el código fuente, podrás crear el servicio con el sc, pero al ejecutarlo siempre te dará error, ya que el .exe no se programó para usarse como servicio. Para que te funcionase tendrías que utilizar el ServiceInstaller que te comente en el post anterior, que hace de intermediario entre el API de Windows y tu .exe.

Espero haberte ayudado mejor esta vez.

Baphonet

Muchas gracias, esta vez me has despejado la cabeza de un guantazo. Ya podia hacer pruebas  :-[, ya...

No tenia ni idea que el programa debia estar preparado para poder utilizarse como servicio (cosa que ni se me paso por la cabeza pero que es de logica), yo creia como dices tu que los exe tratados con los comandos sc se transformaban magicamente en servicios ejecutables.
Todo fue por que leyendo sobre troyanos me aparecio la forma que se ejecutaran como servicio, pero supongo que estos ya estarian "tratados" para poder ponerse como servicio.

Lastima que la pagina que me has puesto este en ingles, ya que no lo domino. Pero con mi amigo babylon o algun otro traductor me pondre a leer y a ver que saco.

Gracias de nuevo ya que este hilo ya hace tiempo que nadie me decia nada, y ya lo daba por perdido y teniendo las mismas dudas y tu no solo has despejado mis dudas sino que me has dado varias opciones en dos contestaciones.

Saludos

juliotejada2

Encontré la solución al problema que daba al el servicio no ha respondido a la petición o inicio del control , este problema me ocasionaba no poder instala ningún programa no poder ejecutar msconfig, regedit, services.msc etc. al igual no dejaba que google entrara rápidamente o no se ejecutaba. en windows 8

la solución es un programa que me limpia el registro y todos los errores que se pudieran ejecutar.

HiJackThis

se puede bajar en

http://hijackthis.softonic.com/

:laugh: espero que les sirva, por que me demore mucho para poder solucionarlo.