【发布时间】:2009-10-09 18:27:40
【问题描述】:
我正在尝试编写一个应用程序和服务来监视一组给定的服务,并且 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:
我试图模拟一个用户,我试图从另一个作为系统服务运行的服务中执行相同的代码。这两者实际上都无法影响服务。如果它开始了,我无法阻止它。如果它停止了,我将无法启动它。我知道这都与权限有关我只是没有找到真正让我控制服务的机制。
任何帮助将不胜感激。
【问题讨论】:
标签: c# windows-7 controls service