¿Cómo puedo verificar si un servicio de Windows se está ejecutando?

Tengo una aplicación en C # (2.0 ejecutándose en XP incrustado) que se está comunicando con un ‘perro guardián’ que se implementa como un servicio de Windows. Cuando se inicia el dispositivo, este servicio normalmente tarda un poco en comenzar. Me gustaría verificar, desde mi código, si el servicio se está ejecutando. ¿Cómo puedo lograr esto?

Creo que algo como esto funcionaría:

Agregue System.ServiceProcess a las referencias de su proyecto (está en la pestaña .NET).

 using System.ServiceProcess; ServiceController sc = new ServiceController(SERVICENAME); switch (sc.Status) { case ServiceControllerStatus.Running: return "Running"; case ServiceControllerStatus.Stopped: return "Stopped"; case ServiceControllerStatus.Paused: return "Paused"; case ServiceControllerStatus.StopPending: return "Stopping"; case ServiceControllerStatus.StartPending: return "Starting"; default: return "Status Changing"; } 

Editar: También hay un método sc.WaitforStatus() que toma el estado deseado y el tiempo de espera, nunca lo usó, pero puede adaptarse a sus necesidades.

Editar: una vez que obtenga el estado, para obtener el estado nuevamente deberá llamar a sc.Refresh() primero.

Referencia: objeto ServiceController en .NET.

Eche un vistazo al objeto ServiceController en .NET.

Aquí obtiene todos los servicios disponibles y su estado en su máquina local.

 ServiceController[] services = ServiceController.GetServices(); foreach(ServiceController service in services) { Console.WriteLine(service.ServiceName+"=="+ service.Status); } 

Puede comparar su servicio con la propiedad service.name dentro del ciclo y obtendrá el estado de su servicio. Para obtener más detalles, vaya a http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx también http://msdn.microsoft.com/en-us/library/microsoft.windows.design .servicemanager (v = vs.90) .aspx