启动&;从另一个Windows服务停止Windows服务

本文关键字:Windows 服务 另一个 amp 启动 | 更新日期: 2023-09-27 17:58:41

我需要从同一台机器(Windows 7或Server 2008)上的另一个服务(主服务)控制Windows服务(从服务)。它无法启动或停止服务。我需要做些什么才能控制服务?主服务是用C#编写的

更新:主服务是一种看门狗——它监视与从服务器的HTTP连接,如果从服务器没有响应(不返回任何HTTP数据),则重新启动从服务器。

启动&;从另一个Windows服务停止Windows服务

您可以让主服务创建一个新的进程,该进程创建一个隐藏的命令窗口,其中包含一个参数,使其调用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();

你需要替换命令中括号内的部分,如果有任何语法错误,我在平板电脑上输入的是抱歉。

处理windows服务的最佳方法是使用System.ServiceProcess命名空间。检查:https://ourcodeworld.com/articles/read/363/how-to-start-stop-and-verify-if-a-service-exists-with-c-in-winforms

但是你在尝试时会遇到一些问题,因为你需要管理员权限才能关闭其他服务,所以你可以通过以下链接来处理这个问题(出于调试目的,你可以以管理员身份打开你的VS,一切都会正常工作):

如何强制我的.NET应用程序以管理员身份运行?