Остановка / запуск службы в коде в Windows 7

Я пытаюсь написать приложение и службу, которые отслеживают определенный набор служб, и а) проверяют, работают ли они, и б), основываясь на определенных критериях, перезапускают их при необходимости.

Я продолжаю сталкиваться с ошибкой доступа отказано.

Если я просто переберу процессы в системе, найду тот, который мне нужен, вот так:

foreach (ServiceController sc in ServiceController.GetServices())
   {                
       if(sc.ServiceName == "MyServiceName")
       {
            sc.Stop();
            sc.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(0, 0, 60));
            sc.Start(); 
       }            
   }   

Я получил:

InnerException: System.InvalidOperationException
        Message="Cannot open My Service service on computer '.'."
        Source="System.ServiceProcess"
        StackTrace:
             at System.ServiceProcess.ServiceController.GetServiceHandle(Int32 desiredAccess)
             at System.ServiceProcess.ServiceController.Stop()
             at lib.ListServices() in D:\lib.cs:line 552
             at lib.Init() in D:\lib.cs:line 56
   InnerException: System.ComponentModel.Win32Exception
             Message="Access is denied"
             ErrorCode=-2147467259
             NativeErrorCode=5
             InnerException: 

Я пытался выдать себя за пользователя, я пытался сделать тот же код из другого сервиса, который работает как системный сервис. Ни один из которых на самом деле не смог повлиять на обслуживание. Если это началось, я не могу это остановить. Если он остановился, я не могу его запустить. Я знаю, что все это связано с разрешениями, которые яЯ просто не могу найти механизм, который на самом деле позволяет мне контролировать сервис.

Будем очень благодарны любой помощи.

Ответы на вопрос(4)

Ваш ответ на вопрос