Ich versuche, eine App und Service zu schreiben, die eine bestimmte Reihe von Diensten überwachen und a) stellt sicher, dass sie ausgeführt werden und b) basierend auf bestimmten Kriterien, starten Sie sie bei Bedarf neu.Stop/Start-Service in Code in Windows 7
Ich laufe weiter in einen Zugriff verweigert Fehler.
Wenn ich einfach durch die Prozesse auf dem System durchlaufen, finden die, die ich wie so wollen:
foreach (ServiceController sc in ServiceController.GetServices())
{
if(sc.ServiceName == "MyServiceName")
{
sc.Stop();
sc.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(0, 0, 60));
sc.Start();
}
}
ich:
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, einen Benutzer zu verkörpern, ich habe hat versucht, denselben Code von einem anderen Dienst auszuführen, der als Systemdienst ausgeführt wird. Keine von beiden konnte tatsächlich den Dienst beeinflussen. Wenn es angefangen hat, kann ich es nicht stoppen. Wenn es aufgehört hat, kann ich es nicht starten. Ich weiß, dass dies alles mit Berechtigungen zusammenhängt. Ich finde gerade keinen Mechanismus, der es mir tatsächlich erlaubt, den Dienst zu kontrollieren.
Jede Hilfe wäre sehr willkommen.