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?
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.
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.
- 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
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
Más información sobre: https://nssm.cc/usage
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>
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".
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...
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