我需要在同一台计算机(Windows 7或Server 2008)上控制另一台(主服务器)的Windows服务(从服务器)。它无法启动或停止服务。我需要做些什么才能控制服务?主服务是用C#
编写的更新: 主服务是一种看门狗 - 它监视与从属的HTTP连接,并在从属无响应时重新启动从属(不返回任何HTTP数据)。
答案 0 :(得分:0)
您可以让主服务创建一个新进程,该进程创建一个隐藏的命令窗口,其中包含一个参数,该参数使其调用windows命令并启动或停止该服务。我们在工作中一直使用这个模型,一旦服务完成更改状态,/ C将导致命令窗口退出。
System.Diagnostics.Process p = new System.Diagnostics.Process ();
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo ( "cmd.exe", "/C net [start or stop] [service name]");
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
p.StartInfo = psi;
P.Start();
您需要替换该命令的括号部分,如果我在平板电脑上输入此语法错误,请对不起。
答案 1 :(得分:0)
处理Windows服务的最佳方法是使用System.ServiceProcess命名空间。检查: https://ourcodeworld.com/articles/read/363/how-to-start-stop-and-verify-if-a-service-exists-with-c-in-winforms
但是尝试这样做会遇到一些问题,因为您将需要管理员权限才能关闭其他服务,因此您可以通过以下链接进行处理(出于调试目的,您可以以admin身份打开VS,一切都会正常进行):< / p>