Próbuję napisać aplikację i usługę, które monitorują dany zestaw usług i a) upewnia się, że działają i b) w oparciu o określone kryteria, zrestartuj je w razie potrzeby.Usługa zatrzymania/uruchomienia w kodzie w systemie Windows 7
Występuje błąd odmowy dostępu.
Gdybym po prostu iterację procesów w systemie, znaleźć taki chcę tak:
foreach (ServiceController sc in ServiceController.GetServices())
{
if(sc.ServiceName == "MyServiceName")
{
sc.Stop();
sc.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(0, 0, 60));
sc.Start();
}
}
uzyskać:
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:
Próbowałem personifikować użytkownika, mam próbował wykonać ten sam kod z innej usługi, która działa jako usługa systemowa. Żadne z nich nie mogło wpłynąć na usługę. Jeśli to się zaczęło, nie mogę tego zatrzymać. Jeśli się zatrzyma, nie mogę go uruchomić. Wiem, że to wszystko jest związane z uprawnieniami. Nie znajduję mechanizmu, który faktycznie pozwala mi kontrolować usługę.
Każda pomoc będzie mile widziana.