Stop / Start-Dienst in Code in Windows 7

Ich versuche, eine App und einen Dienst zu schreiben, die einen bestimmten Satz von Diensten überwachen und a) sicherstellen, dass sie ausgeführt werden, und b) basierend auf bestimmten Kriterien sie nach Bedarf neu starten.

Ich stoße weiterhin auf einen Fehler, bei dem der Zugriff verweigert wurde.

Wenn ich einfach die Prozesse auf dem System durchlaufe, finde ich den gewünschten wie folgt:

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

Ich bekomme:

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: 

Ich habe versucht, mich als Benutzer auszugeben. Ich habe versucht, denselben Code von einem anderen Dienst auszuführen, der als Systemdienst ausgeführt wird. Keiner von beiden konnte den Service tatsächlich beeinträchtigen. Wenn es angefangen hat, kann ich es nicht aufhalten. Wenn es gestoppt ist, kann ich es nicht starten. Ich weiß, dass dies alles mit Berechtigungen zusammenhängt. Ich finde einfach keinen Mechanismus, mit dem ich den Dienst tatsächlich steuern kann.

Jede Unterstützung wäre sehr dankbar.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage