Pregunta

Digamos que tengo una aplicación de terceros que realiza trabajo en segundo plano, pero imprime todos los errores y mensajes en la consola.Esto significa que actualmente tenemos que mantener un usuario conectado al servidor y reiniciar la aplicación (doble clic) cada vez que reiniciamos.

No tan genial.

Estaba bastante seguro de que había una manera fácil de hacer esto: un contenedor de servicios genérico, que se puede configurar con un archivo de registro para stdout y stderr.

lo comprobé svchost.exe, pero según este sitio, es sólo para cosas DLL.Lástima.

EDITAR: La aplicación debe iniciarse desde un archivo por lotes.FireDaemon parece funcionar, pero creo que es un poco excesivo, para algo que se puede hacer en <10 líneas de código Python...Oh bien, No inventado aquí...

¿Fue útil?

Solución

Consulte srvany.exe en Kit de recursos . Esto permitirá ejecutar cualquier cosa como un servicio.

Puede pasar parámetros en la definición del servicio a su ejecutable a través de RegEdit para que pueda ejecutar un archivo por lotes como un servicio configurando el registro de la siguiente manera:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters]
"Application"="C:\\Windows\\System32\\cmd.exe"
"AppParameters"="/C C:\\My\\Batch\\Script.cmd"
"AppDirectory"="C:\\My\\Batch"

Nota: si configura estas teclas en <=> en lugar de utilizar un archivo, solo necesita barras diagonales inversas en los valores.

Otros consejos

Recomiendo NSSM: El administrador del servicio sin succión .

  • EXE de 32/64 bits
  • Dominio público (!)
  • Implementa correctamente los mensajes de detención del servicio y envía la señal adecuada a sus aplicaciones para un apagado correcto.

¿Por qué no simplemente implementar un envoltorio de servicio muy delgado? Aquí hay una guía de inicio rápido para escribir un Servicio en .NET Escribir un servicio útil de Windows en .NET en cinco minutos

Cuando lo ejecuta, puede usar el Proceso para iniciar la aplicación y configurarla para que pueda manejar stdout / stderr usted mismo ( ProcessStartInfo es tu amigo).

Echa un vistazo a FireDaemon. Existe una versión gratuita (FireDaemon lite, creo) que solo permite 1 servicio instalado a la vez, pero esta es una herramienta muy útil para configurar servicios. También se ajusta correctamente a los archivos por lotes, si es necesario.

Secundo la opción firedaemon. También es posible que desee configurar la opción para permitir que el servicio interactúe con el escritorio para permitir que muestre la ventana de salida de cli. Ya no ofrecen una versión gratuita, pero si buscas firedaemon lite en la web, puedes encontrar la versión anterior gratuita o quizás ir a la ruta de pago.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top