当停止选项变灰时停止Windows服务

我已经创build了一个Windows服务,并在控制面板 – >pipe理工具 – >服务的服务,其状态是开始。

我想停止这项服务,但是停止选项是灰色的。 我怎样才能开始/停止服务?

每次我重新启动,然后停止,我可以删除它。

如果你运行这个命令:

sc queryex <service name> 

其中是服务的名称,而不是显示名称(假脱机程序,不是打印假脱机程序),在cmd提示符下,它将返回服务正在运行的进程的PID。 采取该PID并运行

 taskkill /F /PID <Service PID> 

强制PID停止。 有时如果进程挂起,而停止GUI不会让你做任何事情的服务。

你可以做到一行(对于ci环境有用):

 taskkill /fi "Services eq SERVICE_NAME" /F 

filter – >服务 – > ServiceName等于SERVICE_NAMES – >强制

来源: https : //technet.microsoft.com/en-us/library/bb491009.aspx

如果停止选项变灰,那么您的服务在上次调用SetServiceStatus时并不表示它正在接受SERVICE_ACCEPT_STOP 。 如果您使用的是.NET,那么您需要在ServiceBase设置CanStop属性。

当然,如果您接受停止请求,那么您最好确保您的服务能够安全地处理这些请求,特别是如果您的服务仍在通过启动代码进行的话。

使用任务pipe理器查找服务,并使用结束任务从那里杀死它 总是为我做的伎俩。

如果您自己提供了服务,请考虑从OnStart事件中删除长时间运行的操作,通常这会导致服务无法响应。

用pipe理员权限打开命令提示符并在其中键入以下命令。

一个)

 tasklist 

它显示所有可用服务的列表。 在那里你可以看到你想停止/开始/重新启动的服务。 记住要强制停止的服务的PID值。

b)现在input

 taskkill /f /PID [PID value of the service] 

然后按回车。 成功之后,您将看到“成功:PID过程已终止”的消息。

 Ex : taskkill /f /PID 5088 

这将强行杀死冻结的服务。 您现在可以返回到服务器pipe理器并重新启动服务。

正如Aaron上面提到的,一些服务在开发之前不接受SERVICE_ACCEPT_STOP消息。 这是硬编码到可执行文件。 期。 一个workaroud将不会开始,因为你不能改变它的属性,强制执行以下操作:

  1. 启动到安全模式(Windows 10用户可能需要msconfig> boot>安全启动)
  2. 注册到HKLM>系统> ControlSet001>服务
  3. find您的服务条目
  4. 将“开始”键更改为3(手动启动)或4(禁用)

如果无法更改条目,请右键单击左侧窗格中的服务名称,select“权限”,检查“每个人”是否具有完全访问权限,然后再次尝试第4步。

不要忘记从msconfig再次禁用安全启动,并重新启动!

我有同样的问题。 如果您不是计算机上的pipe理员,则需要以pipe理员身份运行“服务”。

我通过以下步骤解决了问题:

  1. 从命令/ Windows RUN打开“services.msc”。

  2. find服务(灰色)。

  3. 双击该服务并转到“恢复”选项卡。

  4. 确保这件事

    • 第一次失败行为被选为“不采取行动”。
    • 第二次失败行动被选为“不采取行动”。
    • 后续失败行动被选为“不采取行动”。

    然后按OK。

现在,服务不会尝试重新启动,您可以从服务列表中删除灰色的服务(即灰色将不再显示)。