Чтобы найти службу и работает ли она,
private static bool IsServiceInstalled(string serviceName)
{
ServiceController[] services = ServiceController.GetServices();
foreach (ServiceController service in services)
if (service.ServiceName == serviceName) return true;
return false;
}
private static bool IsServiceInstalledAndRunning(string serviceName)
{
ServiceController[] services = ServiceController.GetServices();
foreach (ServiceController service in services)
if (service.ServiceName == serviceName) return service.Status != ServiceControllerStatus.Stopped;
return false;
}
Обратите внимание, что на самом деле она проверяет, не остановлена ли она, а не запущена ли она, но вы можете изменить ее, если хотите.
Приятно делать это в кратких конструкциях .NET.Не помню, откуда я взял информацию, но теперь это выглядит так просто и стоит того.