Por lo tanto, crear un servicio de Windows usando Visual Studio es bastante trivial. Mi pregunta profundiza en cuanto a qué hace que un ejecutable se pueda instalar como un servicio & cómo escribir un servicio como una aplicación C directa. No pude encontrar muchas referencias sobre esto, pero supongo que tiene que haber alguna interfaz que pueda implementar para que mi .exe se pueda instalar como un servicio.Creando el servicio de Windows sin Visual Studio
Respuesta
Espero que esto ayude:
http://support.microsoft.com/kb/251192
Parecería que a simple necesidad de ejecutar este exe contra un binario ejecutable para registrarlo como un servicio.
Básicamente hay algunas configuraciones de registro que debe establecer, así como algunas interfaces para implementar.
Salida esto: http://msdn.microsoft.com/en-us/library/ms685141.aspx
Usted está interesado en el SCM (Service Control Manager).
La configuración de su ejecutable como servicio es parte de ella, pero, en realidad, generalmente se maneja con el software de instalación que esté utilizando. Puede usar la herramienta de línea de comando SC durante la prueba (o si no necesita un instalador).
Lo importante es que su programa debe llamar a StartServiceCtrlDispatcher() al iniciarse. Esto conecta su servicio al administrador de control de servicio y configura una rutina ServiceMain que es el punto de entrada principal de su servicio.
ServiceMain (puede llamarlo como quiera realmente, pero siempre parece ser ServiceMain) debe llamar a RegisterServiceCtrlHandlerEx() para definir una rutina de devolución de llamada para que el sistema operativo pueda notificar a su servicio cuando ocurran ciertos eventos.
Éstos son algunos fragmentos de un servicio que escribí hace unos años:
configura como un servicio:
SERVICE_TABLE_ENTRY ServiceStartTable[] =
{
{ "ServiceName", ServiceMain },
{ 0, 0 }
};
if (!StartServiceCtrlDispatcher(ServiceStartTable))
{
DWORD err = GetLastError();
if (err == ERROR_FAILED_SERVICE_CONTROLLER_CONNECT)
return false;
}
ServiceMain:
void WINAPI ServiceMain(DWORD, LPTSTR*)
{
hServiceStatus = RegisterServiceCtrlHandlerEx("ServiceName", ServiceHandlerProc, 0);
manejador de servicio:
DWORD WINAPI ServiceHandlerProc(DWORD ControlCode, DWORD, void*, void*)
{
switch (ControlCode)
{
case SERVICE_CONTROL_INTERROGATE :
// update OS about our status
case SERVICE_CONTROL_STOP :
// shut down service
}
return 0;
}
Sé que llegué un poco tarde a la fiesta, pero recientemente tuve la misma pregunta y tuve que luchar entre las redes buscando respuestas.
Me las arreglé para encontrar este artículo en MSDN que, de hecho, sienta las bases. Terminé combinando muchos de los archivos aquí en un solo exe que contiene todos los comandos que necesito, y agregué mi propio método "void run()" que gira por la vida entera del servicio para mis propias necesidades.
Esto sería un gran comienzo a otra persona con exactamente esta pregunta, así que para los investigadores futuros por ahí, comprobar que funciona:
la muestra completa Servicio http://msdn.microsoft.com/en-us/library/bb540476(VS.85).aspx
- 1. Servicio de Windows sin interferencia de Visual Studio
- 2. Instalar el servicio de Windows creado en Visual Studio
- 3. InstallShield Visual Studio no instala el servicio
- 4. creando el archivo .lib en Visual Studio
- 5. Instalar el servicio de Windows sin InstallUtil.exe
- 6. Creando un plugin para Visual Studio
- 7. WPF sin Visual Studio?
- 8. Apague el host de servicio WCF en Visual Studio
- 9. Agregar referencias sin Visual Studio
- 10. C# Compilación sin Visual Studio
- 11. Microsoft Visual Studio código sin
- 12. Visual studio - precompilación - sin puntos
- 13. Visual Studio Adjuntar el depurador al servicio de Windows - adjuntar gris
- 14. Visual Studio depuración remota un servicio
- 15. Desinstalar Sync Framework sin romper Visual Studio
- 16. Distinguir visualmente Windows de Visual Studio 2010
- 17. El uso de Boost en Windows (Visual Studio)
- 18. Ejecutar pruebas de SpecFlow sin Visual Studio
- 19. Control de fuente TFS sin Visual Studio?
- 20. openMP no está creando subprocesos en visual studio
- 21. Instalar un servicio de Windows desde un proyecto de instalación de Visual Studio
- 22. Ejecutando Visual Studio sin derechos de administrador
- 23. Visual Studio 2010 y Windows 2000
- 24. Agregando un instalador de servicio e instalador de proceso de servicio en visual studio
- 25. Sin ventana de memoria en Visual Studio 2010
- 26. Eliminar un servicio de Windows sin el EXE
- 27. Visual Studio solución explorer sin memoria excepción
- 28. ¿Puedo usar mstest.exe sin instalar Visual Studio?
- 29. Desarrollando para ASP.NET-MVC sin Visual Studio
- 30. Genera archivos .webtest sin usar Visual Studio