我想编写一个控制台或Click Once WinForms应用程序,它将以编程方式停止和/或启动远程机器上的Windows服务.
这两个框都运行.NET 3.5 - 有哪些.NET API可用于实现此目的?
我有一个由服务和可执行文件组成的应用程序.本质上,它是一个表单应用程序,负责在特定情况下启动和停止服务.
在Windows XP上,应用程序使用以下代码管理此项:
ServiceController controller = new ServiceController();
controller.MachineName = ".";
controller.ServiceName = "XXXXXXXXXX";
controller.Stop();
controller.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(0, 0, 10));
controller.Start();
Run Code Online (Sandbox Code Playgroud)
但是在Windows 7上,即使我以管理员身份启动了应用程序,我也会遇到以下异常:
System.InvalidOperationException: Cannot open XXXXXXXXXXXXX service on computer '.'. ---> System.ComponentModel.Win32Exception: Access is denied
--- End of inner exception stack trace ---
at System.ServiceProcess.ServiceController.GetServiceHandle(Int32 desiredAccess)
at System.ServiceProcess.ServiceController.Start(String[] args)
at System.ServiceProcess.ServiceController.Start()
Run Code Online (Sandbox Code Playgroud)
有什么我可以通过编程方式解决这个问题吗?