jueves, 3 de febrero de 2011

Arrancar y detener servicios de Windows con C#

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

Escribir en el visor de eventos con C#

He aquí un pequeño ejemplo de cómo escribir entradas en el registro de sucesos de Windows en C#:

Los puntos clave son los siguientes:
  • Añadir la referencia de System.Diagnostics al proyecto
  • Comprobar que el origen y la carpeta de log existen, y crearlos en caso contrario
  • Crear el objeto EventLog
  • Asignarle el origen y la carpeta de log
  • Escribir la entrada en el visor de eventos
Implementación:

Mensaje de bienvenida

Nace C# ESP

Bienvenidos a mi rincón de la web dedicado a la programación en C#. Aquí podréis encontrar artículos con trucos y ejemplos para resolver diversas situaciones de programación en este lenguaje. Y todo en castellano ;-)

Espero que os guste. Disfrutad de vuestra y volved pronto!

Un abrazo,
Zeno