如何以编程方式停止/启动远程盒子上的Windows服务?

Guy*_*Guy 28 windows-services

我想编写一个控制台或Click Once WinForms应用程序,它将以编程方式停止和/或启动远程机器上的Windows服务.

这两个框都运行.NET 3.5 - 有哪些.NET API可用于实现此目的?

gal*_*ets 42

在C#中:

var sc = new System.ServiceProcess.ServiceController("MyService", "MyRemoteMachine");
sc.Start();
sc.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Running);
sc.Stop();
sc.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Stopped);
Run Code Online (Sandbox Code Playgroud)


Pat*_*uff 8

您也可以使用以下sc命令从命令控制台执行此操作:

 sc <server> start [service name]
 sc <server> stop [service name]
Run Code Online (Sandbox Code Playgroud)

使用

sc <server> query | find "SERVICE_NAME"
Run Code Online (Sandbox Code Playgroud)

获取服务名称列表.

该选项<server>具有表单\\ServerName

sc \\MyServer stop schedule 将停止Scheduler服务.


Sti*_*ack 5

ServiceController.

您需要具有管理远程控制台上的服务的权限.

正如Mehrdad所说,你也可以使用WMI.这两种方法都适用于启动和停止,但WMI需要更多编码,并且可以为您提供更多访问其他资源的权限