¿Cuál es la diferencia entre un servicio de Windows y un exe estándar?¿Cómo se diferencia un servicio de Windows de un exe estándar?
Respuesta
Un servicio de Windows siempre se ejecuta una vez que se inicia el equipo (siempre que esté configurado). Un EXE estándar solo se ejecuta cuando un usuario inicia sesión, y se detendrá si el usuario cierra la sesión.
Se podría utilizar un servicio de Windows para las cosas que siempre se necesitan para funcionar, incluso si nadie está conectado.
Se podría utilizar un archivo EXE estándar para los programas que un usuario se ejecutará mientras está conectado.
Un el servicio es (por lo general) es un exe estándar sin interfaz de usuario. Se puede ejecutar incluso cuando no hay ningún usuario conectado a la máquina, y sus derechos de acceso y visualización del sistema de archivos no depende de qué usuario esté conectado.
No es 100% exacto. Un servicio debe cumplir con algunos requisitos adicionales además de ser un exe estándar sin UI. –
sí algunos requisitos, y una API diferente a la que tiene acceso, pero sigue siendo un EXE estándar. –
¿El servicio del Agente SQL Server no tiene la interfaz del semáforo? Eso es un servicio si no me equivoco? – LearningCSharp
Un servicio de Windows tiene una función especial ServiceMain
y debe responder a Service Control Manager (SCM) manda correctamente para ser funcional como un servicio. Por otro lado, un ejecutable regular tiene una función main
o WinMain
y no necesita responder a ningún comando de control en particular.
Técnicamente correcto, pero no creo que responda la pregunta muy bien. (Ver la respuesta de Eric J). – Ash
Las respuestas de Greg y Eric funcionan, pero solo puedo marcar una como correcta :-( – LearningCSharp
Definitivamente creo que esta es una respuesta mucho más correcta que la elegida. La otra responde mejor a la pregunta "¿Qué es un servicio de Windows?". –
Si usted está hablando de la implementación de una operación en segundo plano, aquí están los criterios que recomendaría a elegir un servicio o un .exe sin ventanas:
Elija un exe si:
- es necesario que se ejecute sobre una base por usuario y sólo cuando un usuario se registra en
- lo necesita para interactuar con el escritorio de Windows (iconos de notificación, etc.)
- sino que precisa de todos los privilegios de la iniciada una sesión en usuario (no más, no menos)
Elija un servicio si:
- Puede que tenga que ejecutar cuando no hay nadie conectado
- En general, no necesita datos o privilegios por usuario
- Es únicamente se comunica con el red
- Necesita exponer nuevos objetos "asegurables". Objetos que tienen sus propias listas de control de acceso declarativo (DACL) que limitan el acceso a ciertas cuentas/grupos.
- Necesita permisos especiales que pueden no estar disponibles para el usuario que ha iniciado sesión.
Los servicios pueden ser fácilmente agujeros de seguridad, así que prefiera .exe a los servicios. A veces necesitarás ambos. Un comprobador de virus necesita poder acceder a todos los archivos del sistema de archivos (que el usuario actual puede no ser capaz de hacer), pero también debe proporcionar información al usuario en forma de cuadros de diálogo/pop-ups de notificación y una herramienta icono de bandeja. Los servicios no pueden interactuar directamente con la GUI del usuario. Pueden usar los servicios estándar de Windows IPC (comunicación entre procesos) como tuberías y regiones de memoria compartida. Dichas herramientas suelen tener tanto un servicio como un .exe sin ventanas por usuario que se comunica con el servicio utilizando conductos de Windows o regiones de memoria compartida.
Obtenga "Programación de seguridad de Windows" por Keith Brown si desea profundizar en estos temas.
Minor nit: la D en DACL significa discrecional. –
"Se comunica únicamente con la red", esto es incorrecto, los servicios pueden hacer muchas otras cosas además del acceso a la red. – Ash
No todos los servicios de Win32/64 se comunican únicamente con la red, pero todos los daemons que solo necesitan comunicarse con la red casi siempre se implementan mejor como servicios cuando se programan en Win32/64. Tuve la intención de que la lista describiera los escenarios donde los servicios tienen sentido, sin circunscribir cada caso de uso para los servicios de Windows. –
Desde la perspectiva del Binario EXE y desde la perspectiva de la Biblioteca C del Compilador, un servicio de Windows se ve exactamente como un programa Unix estándar o un programa de consola de Windows. es decir, con main()
punto de entrada. Lo que hace que un servicio sea diferente es cómo lo carga/invoca Microsoft Windows (desde el registro, generalmente al arrancar). Un servicio puede (y debe) indicarle a la aplicación SC.exe [Administrador de control de servicios] a través de llamadas API de Windows, que el servicio se inició, detuvo, suspendió, etc.
- 1. Eliminar un servicio de Windows sin el EXE
- 2. ¿Cómo diferencia Windows entre un EXE regular y un exe .NET?
- 3. Varios servicios de Windows en un exe
- 4. ¿Cómo puedo ejecutar un programa EXE desde un servicio de Windows usando C#?
- 5. Cómo encontrar el servicio de Windows exe ruta
- 6. Cómo ejecutar un exe del servicio de Windows y detener el servicio cuando se cierra el proceso de ejecución?
- 7. Cómo hacer un comienzo exe en el inicio de Windows
- 8. ¿Cómo reproducir un sonido de Windows estándar?
- 9. Mismo nombre mutex para un servicio de Windows y exe en Windows 7
- 10. ¿Cómo puede un servicio de Windows iniciar un proceso cuando se produce un evento de temporizador?
- 11. Firmando un archivo EXE de Windows
- 12. Alternar entre EXE independiente y el servicio de Windows
- 13. Instalar un servicio de Windows .NET sin InstallUtil.exe
- 14. Cómo capturar la salida de error estándar de un servicio de Windows?
- 15. ¿Cómo se puede combinar un archivo DLL de Windows C++ en un exe de aplicación C#?
- 16. ¿Cómo puedo averiguar qué bibliotecas usa un exe de Windows?
- 17. Monitor cuando se inicia un exe
- 18. ¿Verifica si se está ejecutando un servicio de Windows?
- 19. ¿Cómo se puede saber si se instala un servicio de Windows utilizando (preferentemente) solo un lote?
- 20. Permitir que se configure un servicio de Windows
- 21. Actualización automática de un servicio de Windows
- 22. ClickOnce ¿implementar un servicio de Windows?
- 23. Console.WriteLine() dentro de un servicio de Windows?
- 24. ¿Cómo toco un archivo con los comandos estándar de Windows?
- 25. Problema al probar un servicio de Windows
- 26. Crear un servicio de Windows en vb6
- 27. ¿En qué directorio se ejecuta un servicio de Windows?
- 28. ¿Iniciar un servicio de Windows deshabilitado?
- 29. ¿Cómo hacer un servicio de Windows con parámetros?
- 30. Reiniciar mediante programación un servicio de Windows
Esto también es una muy buena [publicación] (http: //superuser.com/questions/209654/whats-the-difference-between-anpplication-process-and-services) –