Я пытаюсь написать приложение и службу, которые контролируют данный набор сервисов и a) убеждаются, что они запущены, и b) на основе определенных критериев, перезапустите их по мере необходимости.
Я продолжаю работать с ошибкой, запрещенной доступом.
Если я просто перебираю процессы в системе, найдите тот, который я хочу так:
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:
Я попытался выдавать себя за пользователя, я попытался сделать тот же код из другой службы, которая работает как системная служба. Ни один из них не смог повлиять на обслуживание. Если он начнется, я не могу его остановить. Если его остановить, я не могу его запустить. Я знаю, что все это связано с разрешениями. Я просто не нахожу механизм, который фактически позволяет мне управлять сервисом.
Любая помощь будет принята с благодарностью.