Проверка существования службы и ее состояния может быть выполнена путем выполнения запроса WMI:
// Setup the query
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_Service WHERE Name = 'Blah'");
// Execute the query and enumerate the objects
foreach (ManagementObject queryObj in searcher.Get())
{
// examine the query results to find the info you need. For example:
string name = (string)queryObj["Name"];
bool started = (bool)queryObj["Started"];
string status = (string)queryObj["Status"];
}
Подробнее о классе WMI Win32_Service см. Здесь .