He escrito un programa de consola que "hace cosas", principalmente con boost. ¿Cómo lo convierto a un servicio de Windows? ¿Qué debería saber sobre los servicios de Windows de antemano?¿Convierte un programa C++ a un servicio de Windows?
Respuesta
There's a good example on how to set up a minimal service on MSDN. Consulte las partes sobre cómo escribir la función principal, el punto de entrada y también el código de ejemplo.
Una vez que haya instalado y ejecutado un servicio de Windows, descubrirá el siguiente gran problema: es una pena depurarlo. No hay terminal (y por lo tanto no hay stdout/stderr) y tan pronto como intente ejecutar el ejecutable, en realidad inicia el servicio y luego vuelve a usted.
Un truco que he encontrado muy útil es agregar una opción -foreground
a su aplicación para que si se ejecuta con esa marca, evite el código de inicio del servicio y se ejecute como una aplicación de consola normal, lo que hace que sea mucho más fácil depurar. En VS.Net configure las opciones de depuración para invocar con ese indicador.
Usted puede ser capaz de 'envolver' el uso de esta herramienta de CodeProject:
http://www.codeproject.com/KB/system/xyntservice.aspx
Vale la pena verlo.
La solución más simple podría ser crear un nuevo proyecto de servicio de Windows en Visual Studio y copiar el código en el nuevo proyecto.
Si refactoriza su código para que haya dividido la IU (en este caso la consola) de la lógica, podría crear una biblioteca que haga el trabajo y luego llamarlo desde el proyecto de consola y el Proyecto de servicio.
En lugar de cortar y pegar, cargue su código de trabajo (- la IU) en el servicio como una biblioteca – Patrick
Puede configurar una aplicación se ejecute como un servicio mediante el uso de la herramienta Srvany, que es una parte de la Windows Server 2003 Resource Kit Tools.
Srvany solo permite un servicio al mismo tiempo. Entonces escribo mi srvany (sFany) para hacer que nginx y php-cgi se ejecuten juntos como servicio de Windows. Aquí está la fuente https://github.com/stxh/sFany
Hay un muy buen ejemplo en MSDN here
Es un proyecto de servicio de la caldera placa de C++ que se ha auto instalación/función de desinstalación y el servicio de registros de arranque y parada de eventos en el registro de eventos de Windows. Se puede detener e iniciar a través de la aplicación de servicios (snapin) como otros servicios. Es posible que desee darle inicialmente los derechos de LocalSystem para que funcione, ya que en xp al menos no tiene suficientes derechos para comenzar con los derechos proporcionados por el proyecto de LocalService. El proyecto de Visual Studio 2008 se ejecuta fuera de la caja a pesar de las instrucciones descargadas que implican lo contrario.
Un poco tarde pero espero que esto ayude a otra persona.
- 1. Crear un servicio de Windows para abrir un programa- Delphi
- 2. ¿Se convierte cada programa de Objective C a código C?
- 3. Anotación de eventos en un programa de servicio de Windows
- 4. ¿Cómo puedo ejecutar un programa EXE desde un servicio de Windows usando C#?
- 5. C# servicio de Windows o simplemente programa normal?
- 6. Programa de Java como servicio de Windows
- 7. C++ programa convierte fahrenheit en celsius
- 8. Programa que convierte html a imagen
- 9. Implementación de un programa personalizado para un servicio de alojamiento
- 10. Convierte (imprime) un archivo a PDF, ¿usando R? (en Windows)
- 11. ¿Cómo instalo un servicio C# Windows sin crear un instalador?
- 12. Pasar un objeto como parámetro a un servicio de Windows
- 13. Instalar el programa Java como un servicio de Windows: ¿alternativa al servicio Java?
- 14. Actualización automática de un servicio de Windows
- 15. Cómo crear un servicio de escucha C# para MSMQ como un servicio de Windows
- 16. Actualiza silenciosamente un servicio de Windows
- 17. Cómo notificar a un servicio de Windows (C#) de un cambio de tabla DB (sql 2005)?
- 18. Reiniciar mediante programación un servicio de Windows
- 19. Cómo configurar log4net para un servicio de Windows C#
- 20. ¿Cómo convierto un programa Python a un programa Runnable .exe de Windows?
- 21. ¿Cómo se convierte una cadena de C++ a un int?
- 22. Convierte un doble en un QString
- 23. ¿Cómo instalar un servicio de Windows mediante programación en C#?
- 24. ¿Escribir y compilar un programa C en Windows XP?
- 25. Servicio de Windows w/FileSystemWatcher en C#
- 26. esquema asociado (por ejemplo: cms. //) a un programa de Windows
- 27. encontrar el ejecutable real y la ruta asociada a un servicio de Windows usando C#
- 28. Usar un servicio web en la aplicación C# Windows
- 29. Llamar a un servicio web desde C++
- 30. Problema al probar un servicio de Windows
Hay algunos consejos útiles para la depuración aquí (especialmente el uso de gflags para iniciar automáticamente el depurador): http: // support .microsoft.com/kb/824344 –
¿agrego el -foreground a la línea de comando? – Maciek
Sí, si se ejecuta sin un indicador, el servicio se instala y se ejecuta (esta es la forma en que los servicios deben funcionar). Si ejecuta con la opción -foreground, omite el paso de instalación del servicio. –