servicios services open msc manager español windows-services service

windows-services - open - windows services c#



¿En qué se diferencia un servicio de Windows de un exe estándar? (5)

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 el punto de entrada main() . 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) decirle a la aplicación SC.exe [Administrador de control de servicios] mediante llamadas a la API de Windows que el servicio se inició, detuvo, suspendió, etc.

¿Cuál es la diferencia entre un servicio de Windows y un exe estándar?


Si está hablando de implementar una operación en segundo plano, estos son los criterios que recomendaría para elegir un servicio o un .exe sin ventana:

Elija un exe si:

  • Necesitas que se ejecute por usuario y solo cuando un usuario está conectado
  • Lo necesita para interactuar con el escritorio de Windows (iconos de notificación, etc.)
  • Necesita todos los privilegios del usuario que ha iniciado sesión (ni más ni menos)

Elija un servicio si:

  • Puede necesitar ejecutarse cuando nadie está conectado
  • Generalmente no necesita datos o privilegios por usuario
  • Se comunica únicamente con la 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 los .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.


Un servicio de Windows siempre se ejecuta una vez que se inicia la computadora (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.

Utilizaría un servicio de Windows para cosas que siempre deben ejecutarse incluso si nadie está conectado.

Utilizaría un EXE estándar para los programas que un usuario ejecutará mientras esté conectado.


Un servicio es (por lo general) es un exe estándar sin UI. Puede ejecutarse 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 haya iniciado sesión.


Un servicio de Windows tiene una función ServiceMain especial y debe responder correctamente a los comandos del Administrador de control de servicios (SCM) para que sea 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.