На самом деле цикл выглядит так:
foreach (ServiceController SC in ServiceController.GetServices())
может вызвать исключение «Отказано в доступе», если учетная запись, под которой работает ваше приложение, не имеет прав на просмотр свойств службы.С другой стороны, вы можете безопасно сделать это, даже если ни один сервис с таким именем не существует:
ServiceController SC = new ServiceController("AnyServiceName");
Но доступ к его свойствам, если сервис не существует, приведет к исключению InvalidOperationException.Итак, вот безопасный способ проверить, установлена ли служба:
ServiceController SC = new ServiceController("MyServiceName");
bool ServiceIsInstalled = false;
try
{
// actually we need to try access ANY of service properties
// at least once to trigger an exception
// not neccessarily its name
string ServiceName = SC.DisplayName;
ServiceIsInstalled = true;
}
catch (InvalidOperationException) { }
finally
{
SC.Close();
}