¿Hay alguna forma rápida de, dado un archivo ejecutable, crear un servicio de Windows que, cuando se inicia, lo inicia?
windows
windows-services
Latorre alemán
fuente
fuente
Respuestas:
Para crear un servicio de Windows desde un ejecutable, puede usar
sc.exe
:Debe tener comillas alrededor de la
exe
ruta real y un espacio después debinPath=
.Se
sc
puede encontrar más información sobre el comando 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 sea de servicio como servicio, recibirá el siguiente error al intentar iniciar el servicio:
Existen herramientas que pueden crear un servicio de Windows a partir de ejecutables arbitrarios que no son de servicio; consulte las otras respuestas para ver ejemplos de dichas herramientas.
fuente
binpath=
tener que rodear la ruta ejecutable con comillas dobles es totalmente incorrecto, al menos para Windows 10. la cita se requiere si y solo si la ruta contiene caracteres especiales como espacios en blanco. Además, la carcasa (minúscula / mayúscula / minúscula) no importa en ningún lado, también en los nombres de las variables, ydisplayname="my service"
es otra ventaja para pasar en la línea de comandos al crear un servicio para ver como la primera fila (Name
) enservices.msc
.binPath=
fue requerido para mí en Windows 7 pero no en Windows 10Use NSSM ( el Administrador de servicios que no es succionador ) para ejecutar un archivo .BAT o cualquier archivo .EXE como servicio.
http://nssm.cc/
nssm.exe install [serviceName]
fuente
Extendiendo la respuesta (Kevin Tong).
Paso 1: descargue y descomprima nssm-2.24.zip
Paso 2: desde el tipo de línea de comando:
C:\> nssm.exe install [servicename]
abrirá la GUI como se muestra a continuación (el ejemplo es el servidor UT2003), luego simplemente búsquelo en: yourapplication.exe
Más información sobre: https://nssm.cc/usage
fuente
nssm.exe install [serviceName]
. Esta solución funciona, pero si tiene una aplicación GUI, no funcionará en Win Serever2003. Si luego desea eliminarlo, usenssm.exe remove [youservicename]
nginx
no es necesario y engañoso. El comando también funcionará sin él. Es un parámetro opcional si desea proporcionar el nombre del servicio desde el símbolo del sistema.Muchas respuestas existentes incluyen intervención humana en el momento de la instalación. Este puede ser un proceso propenso a errores. Si desea instalar muchos ejecutables como servicios, lo último que desea hacer es hacerlo 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 escribir (y solo escribir una vez) es un archivo de configuración de servicio simple junto con su ejecutable. correr
instalará el servicio
stdout
ystderr
están todos registrados. Para obtener más información, visite el sitio web del proyecto .Un archivo de configuración de trabajo es muy simple, como se demuestra a continuación. Pero también tiene muchas características útiles como
<env>
y a<persistent_env>
continuación.fuente
estos extras resultan útiles ... deben ejecutarse como administrador
Si el nombre de su servicio tiene espacios, escríbalo entre comillas.
fuente
sc create <service_name> binpath= <binary_path>
He probado un buen producto para eso: AlwaysUp . No son gratuitos, pero tienen un período de prueba de 30 días para que pueda probarlo ...
fuente
Puede consultar mi pequeña utilidad gratuita para las operaciones de creación / edición / eliminación del servicio. Aquí hay un ejemplo de creación:
Vaya a Servicio -> Modificar -> Crear
Archivo ejecutable (google drive): [Descargar]
Código fuente: [Descargar]
Publicación en el blog: [BlogLink]
Clase de editor de servicio: WinServiceUtils.cs
fuente