Page 1 of 1

Como crear un servicio de windows

PostPosted: Sat Apr 08, 2023 2:41 pm
by leandro
Buenos días para todos

Queremos crear un proceso que se ejecute todo el tiempo, nos gustaría hacerlo como un servicio de windows, algo similar a lo que hace mysql. Pero no sabemos cual es el camino?

Asumimos que debemos tener un exe, pero como se hace para activarlo y desactivarlo, que tambien salga en la configuración del windows?

Image

Re: Como crear un servicio de windows

PostPosted: Sat Apr 08, 2023 4:56 pm
by cmsoft

Re: Como crear un servicio de windows

PostPosted: Mon Apr 10, 2023 3:40 pm
by leandro
Amigo buenos días, muchas gracias por la ayuda.

Buscando en el foro encontré varios post que habían hecho con anterioridad, voy a revisarlas a ver que solución encuentro. El tema que mas preocupa es que parece que todo esto esta escrito en harbour y nosotros usamos xharbour.

https://forums.fivetechsupport.com/viewtopic.php?f=3&t=37183&p=222119&hilit=windows+service&sid=44c61e70e378c65cc7f50edc3c430988&sid=af6c71cf3417d24e0c3c30ce5da764af#p222119
https://forums.fivetechsupport.com/viewtopic.php?f=6&t=32147&p=188240&hilit=servicio+windows&sid=35e26bdbdaedf076522bce8d24b768c5&sid=af6c71cf3417d24e0c3c30ce5da764af#p188240

Re: Como crear un servicio de windows

PostPosted: Mon Apr 10, 2023 3:45 pm
by cmsoft
Leandro:
Por lo que leí en el link que te pasé, hablaba de como poner un programa (un exe) como servicio.
Creo que independientemente de con qué esté hecho.

Re: Como crear un servicio de windows

PostPosted: Mon Apr 10, 2023 3:52 pm
by leandro
Si tienes toda la razón, voy a crear un pequeño ejecutable para hacer la prueba de funcionamiento, otro de los problemas es que necesitamos que ese servicio se instale de manera automática, sin intervención del usuario.

Re: Como crear un servicio de windows

PostPosted: Mon Apr 10, 2023 4:29 pm
by cmsoft
Para eso puedes hacerlo mediante comandos de consola de windows desde dentro de tu programa
Por ejemplo con net start > servicios.txt puedes guardar los servicios que estan corriendo en windows, y ver luego el archivo servicios.txt si existe tu servicio, y sino, instalarlo. Y así cualquier otro comando de windows.
Por ejemplo, si quiero saber si está instalado MySQL en la terminal, hago lo siguiente:
Code: Select all  Expand view
#include 'fivewin.ch'

Function Main()
LOCAL cComando , cRta
cComando := "C:\windows\system32\net.exe start > .\servicios.txt"
MemoWrit('servicios.bat',cComando)
DELETE FILE servicios.txt
WaitRun( 'servicios.bat', 0 )
cRta := MemoRead("servicios.txt")
IF !"MySQL"$cRta
   MsgStop("MySQL Error")
   //O instalar el servicio
   ELSE
   MsgInfo("MySQL Ok")
   // Seguir con tu logica
ENDIF
RETURN nil

Re: Como crear un servicio de windows

PostPosted: Tue Apr 11, 2023 6:48 pm
by leandro
Cesar muchas gracias por la ayuda... tu código funciono de maravilla.

El problema es que parece que ese POST que me recomendaste ya es algo antiguo, o no tengo los ejecutables necesarios para hacerlo, ya que al intentar correr el ejemplo no funciona, estuve buscando dentro de la carpeta los exe, pero no están.

Code: Select all  Expand view
C:\Users>C:\Program Files\Resource Kit\Instsrv.exe Notepad C:\Program Files\Resource Kit\Srvany.exe
"C:\Program" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.


Abusando de tu confianza y conocimiento, me podrías indicar como puedo crear el servicio con las instrucciones que sugieres. :oops:

De antemano gracias

Re: Como crear un servicio de windows

PostPosted: Tue Apr 11, 2023 8:41 pm
by cmsoft
Leandro, yo nunca lo he hecho, solo busque en google.
Probé intentando crearlo con el siguiente comando:
Code: Select all  Expand view

sc.exe create prueba binpath= "c:\fwh21\samples\leandro.exe"
 

Tienes que ejecutarlo con privilegios de administrador
El servicio lo crea pero no pude ponerlo a correr