Crear servicio de Windows desde ejecutable


¿Hay alguna forma rápida de, dado un archivo ejecutable, crear un servicio de Windows que, cuando se inicia, lo inicia?

Author: German Latorre, 2010-08-27

6 answers

Para crear un Servicio de Windows a partir de un ejecutable, puede usar sc.exe:

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"

Debe tener comillas alrededor de la ruta exe real, y un espacio después de la binPath=.

Puede encontrar más información sobre el comando sc en Microsoft KB251192.

Tenga en cuenta que no funcionará para cualquier ejecutable: el ejecutable debe ser un Servicio de Windows ( es decir, implementar ServiceMain). Al registrar un ejecutable que no es de servicio como un servicio, obtendrá el siguiente error al intentar iniciar el servicio:

Error 1053: El servicio no respondió a la solicitud de inicio o control de manera oportuna.

Hay herramientas que pueden crear un Servicio de Windows a partir de ejecutables arbitrarios que no sean de servicio, consulte las otras respuestas para ver ejemplos de tales herramientas.

 347
Author: Sergii Pozharov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-25 11:42:07

Use NSSM( el Administrador de Servicios no Succionador) para ejecutar a .BAT o cualquiera .Archivo EXE como servicio.

Http://nssm.cc/

  • Paso 1 : Descargar NSSM
  • Paso 2 : Instala tu servicio con nssm.exe install [serviceName]
  • Paso 3 : Esto abrirá una interfaz gráfica de usuario que utilizará para localizar su ejecutable
 167
Author: Kevin Tong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-02 17:00:45

Extendiendo (Kevin Tong) respuesta.

Paso 1: Descarga y descomprime nssm-2.24.zip

Paso 2: Desde el tipo de línea de comandos:

C:\> nssm.exe install [servicename]

Se abrirá la interfaz gráfica de usuario como se muestra a continuación (el ejemplo es UT2003 server), luego simplemente navegue hasta: yourapplication.exe

introduzca la descripción de la imagen aquí

Más información sobre: https://nssm.cc/usage

 75
Author: YumYumYum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-04 11:23:01

Muchas respuestas existentes incluyen la intervención humana en el momento de la instalación. Esto puede ser un proceso propenso a errores. Si tiene muchos ejecutables que desea instalar como servicios, lo último que desea hacer es hacerlos manualmente en el momento de la instalación.

Hacia el escenario descrito anteriormente, creé serman, una herramienta de línea de comandos para instalar un ejecutable como servicio. Todo lo que necesita para escribir (y solo escribir una vez) es un simple archivo de configuración de servicio junto con su ejecutable. Ejecutar

serman install <path_to_config_file>

Instalará el servicio. stdout y stderr están todos registrados. Para más información, echa un vistazo al sitio web del proyecto .

Un archivo de configuración de trabajo es muy simple, como se muestra a continuación. Pero también tiene muchas características útiles como <env> y <persistent_env> a continuación.

<service>
  <id>hello</id>
  <name>hello</name>
  <description>This service runs the hello application</description>

  <executable>node.exe</executable>

  <!-- 
       {{dir}} will be expanded to the containing directory of your 
       config file, which is normally where your executable locates 
   -->
  <arguments>"{{dir}}\hello.js"</arguments>

  <logmode>rotate</logmode>

  <!-- OPTIONAL FEATURE:
       NODE_ENV=production will be an environment variable 
       available to your application, but not visible outside 
       of your application
   -->
  <env name="NODE_ENV" value="production"/>

  <!-- OPTIONAL FEATURE:
       FOO_SERVICE_PORT=8989 will be persisted as an environment
       variable to the system.
   -->
  <persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>
 8
Author: KFL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-13 07:37:25

Estos extras resultan útiles.. necesita ser ejecutado como un administrador

sc install <service_name> binpath=<binary_path>
sc stop    <service_name>
sc queryex <service_name>
sc delete  <service_name>

Si su nombre de servicio tiene espacios, escriba "comillas".

 3
Author: PodTech.io,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-12 18:26:23

He probado un buen producto para eso: AlwaysUp. No es gratis, pero tienen un período de prueba de 30 días para que pueda probarlo...

 0
Author: A. Masson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-01 09:06:50