停止选项显示为灰色时停止Windows服务

Stopping a windows service when the stop option is grayed out

我已经创建了Windows服务,并且在控制面板中的服务->管理工具->服务中,其状态正在开始。

我想停止此服务,但"停止"选项显示为灰色。
如何启动/停止服务?

每次重新启动时,它都会停止,可以删除它。


如果运行命令:

1
sc queryex <service name>

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

1
taskkill /F /PID <Service PID>

强制PID停止。有时,如果在停止GUI时进程挂起,则您无法使用该服务执行任何操作。


您可以在一行中完成此操作(适用于ci环境):

1
taskkill /fi"Services eq SERVICE_NAME" /F

筛选->服务-> ServiceName等于SERVICE_NAMES->强制

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


如果停止选项显示为灰色,则您的服务在最后一次调用SetServiceStatus时未表示它正在接受SERVICE_ACCEPT_STOP。如果使用的是.NET,则需要在ServiceBase中设置CanStop属性。

当然,如果您接受停止请求,则最好确保您的服务可以安全地处理这些请求,尤其是在您的服务仍在通过其启动代码进行的情况下。


使用任务管理器找到服务,然后使用"结束任务"从那里杀死它。
总是对我有用。

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


如上文Aaron所述,某些服务在开发之时不接受SERVICE_ACCEPT_STOP消息。并将其硬编码到可执行文件中。期。一种工作方式是不要启动它,并且由于您无法更改其属性,因此请强制执行以下操作:

  • 引导到安全模式(Windows 10用户可能需要msconfig>引导>安全引导)
  • 注册到HKLM>系统> ControlSet001>服务
  • 找到您的服务条目
  • 将"开始"键更改为3(手动启动)或4(禁用)
  • 如果您无法更改条目,请在左窗格上右键单击您的服务名称,选择"权限",检查"所有人"是否具有完全访问权限,然后再次尝试步骤4。

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


    1
    2
    sc queryex <service name>
    taskkill /F /PID <Service PID>

    例如

    enter image description here

    eg


    打开具有管理员访问权限的命令提示符,然后在其中键入以下命令。

    一个)

    1
    tasklist

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

    b)现在输入

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

    然后按回车。成功的话,您会得到信息
    "成功:具有PID的过程已终止"。

    1
    Ex : taskkill /f /PID 5088

    这将强行终止冻结的服务。现在,您可以返回服务器管理器并重新启动服务。


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

  • 从命令/ Windows RUN中打开" services.msc"。

  • 查找服务(显示为灰色)。

  • 双击该服务,然后转到"恢复"选项卡。

  • 确保这件事

    • 首次失败操作被选择为"不执行任何操作"。
    • 将第二次失败操作选择为"不执行任何操作"。
    • 后续失败操作被选择为"不执行任何操作"。

    然后按

  • 现在,该服务将不会尝试重新启动,您可以从服务列表中删除变灰的服务(即变灰的将消失)。


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