Mediante el uso de la clase ServiceController se puede obtener control sobre un servicio de Windows instalado en el equipo. Esta clase permite comprobar si un servicio está instalado, en qué estado se encuentra (parado, en marcha, etc), y realizar acciones sobre él como pararlo, arrancarlo o mandarle comandos.
Vemos los pasos a realizar:
- Añadir la referencia System.ServiceProcess al proyecto
- Crear el objeto ServiceController capturando el servicio deseado
- Comprobar el estado: ¿Existe el servicio? ¿Está parado/arrancado?
- Realizar acción sobre el servicio: Parar/Arrancar
- Esperar el resultado y cerrar el objeto ServiceController
Vemos un ejemplo de cómo detener un servicio:
Vemos ahora un ejemplo de cómo iniciar un servicio:
Comentarios:
Analizando un poco el código de estos dos ejemplos, podemos realizar las siguientes observaciones:
- Se crea el objeto de control pasandole el nombre del servicio con el que queremos operar
- Se comprueba el estado del servicio (si se pudo cargar, está parado, etc)
- Se arranca o para el servicio
- Se espera a que esté arrancado o parado
- Se cierra el objeto de control
Tener en cuenta que existen también las funciones y opciones para pausar (Pause) y rearrancar (Continue) servicios, así como para ejecutar comandos (ExecuteCommand) y algunas otras operaciones.
Ver la documentación de la clase ServiceController en la web
MSDN