首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServiceController -无法停止服务[C#]

ServiceController -无法停止服务[C#]
EN

Stack Overflow用户
提问于 2020-01-30 07:16:26
回答 1查看 401关注 0票数 1

我在这里看到了很多类似的问题,但没有一个能帮我解决问题。我想停止使用ServiceController对象的服务。但是它失败了,我得到了一个例外: System.ComponentModel.Win32Exception (0x80004005)。我不明白为什么..。我以“以管理员身份运行”运行程序。

代码语言:javascript
复制
ServiceController ctrl = ServiceController.GetServices().Where(s => s.ServiceName == "service_name").SingleOrDefault();
if (ctrl == null) return;

if (ctrl.Status.Equals(ServiceControllerStatus.Running))
{
   try 
   {
      ctrl.Stop();
   }
   catch(Exception ex)
   {
      Log(ex.ToString(), 3);
   }
}

如果我从代码中调用net命令,那么一切都正常。为什么?

代码语言:javascript
复制
 Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("net stop service_name");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-03 06:14:53

在我们继续讨论ServiceController之后,发现了以下内容:

  • ServiceController能够使用服务,但不能Stop
  • From系统日志。很明显,当试图使用stop
  • ServiceControllers Start & Stop时,ServiceController崩溃与其他服务(如使用CMDProcess.StartPrintSpooler
  • )很好地工作,我们可以通过sc stop "servicename"
  • Finally停止服务。问题在于服务本身以及它的构造方式(

F 222)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59980844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档