我已经在控制面板的服务中创建了一个Windows服务 - >管理工具 - >服务,它的地位正在开始。
我想停止此服务,但停止选项显示为灰色。 我该如何开始/停止服务?
每次重新启动,它都会停止,我可以将其删除。
答案 0 :(得分:134)
如果您运行命令:
sc queryex <service name>
在哪里是服务的名称,而不是显示名称(假脱机程序,而不是后台打印程序),在cmd提示符下,它将返回运行该服务的进程的PID。拿那个PID然后运行
taskkill /F /PID <Service PID>
强制PID停止。有时,如果进程挂起,而停止GUI则不允许您对服务执行任何操作。
答案 1 :(得分:20)
您可以在一行中执行此操作(对于ci环境很有用):
taskkill /fi "Services eq SERVICE_NAME" /F
过滤器 - &gt;服务 - &gt; ServiceName等于SERVICE_NAMES - &gt;力
来源:https://technet.microsoft.com/en-us/library/bb491009.aspx
答案 2 :(得分:6)
如果停止选项显示为灰色,那么您的服务在上次调用SetServiceStatus
时未表明它正在接受SERVICE_ACCEPT_STOP
。如果您使用的是.NET,则需要在ServiceBase
中设置CanStop
属性。
当然,如果您接受停止请求,那么您最好确保您的服务可以安全地处理这些请求,尤其是当您的服务仍在使用其启动代码时。
答案 3 :(得分:6)
使用任务管理器找到服务并使用结束任务从那里终止服务 总能帮到我。
如果您自己制作了服务,请考虑从OnStart事件中删除长时间运行操作,这通常是导致服务无响应的原因。
答案 4 :(得分:1)
使用admin访问权限打开命令提示符并在其中键入以下命令。
a)
tasklist
显示所有可用服务的列表。在那里,您可以看到要停止/启动/重新启动的服务。记住要强制停止的服务的PID值。
b)现在输入
taskkill /f /PID [PID value of the service]
然后按Enter键。成功后,您将收到消息 “成功:PID的过程已经终止”。
Ex : taskkill /f /PID 5088
这会强行杀死冻结的服务。您现在可以返回到服务器管理器并重新启动该服务。
答案 5 :(得分:1)
正如Aaron上面提到的,某些服务在开发时不接受SERVICE_ACCEPT_STOP
个消息。这被硬编码到可执行文件中。期。 workaroud不会让它开始,因为你不能改变它的属性,强行执行以下操作:
如果您无法更改条目,请右键单击左侧窗格中的服务名称,选择“权限”,检查“所有人”是否具有完全访问权限,然后再次尝试步骤4.
不要忘记再次从msconfig禁用安全启动,然后重新启动!
答案 6 :(得分:1)
答案 7 :(得分:0)
这里有一个简单的方法来终止一个你不能直接停止的服务,如果该服务有依赖关系。
例如,停止“网络存储接口服务”又名 nsi 将杀死无法杀死的 dnscache 服务。它还会杀死所有网络功能,并且可能需要重新启动 Windows 才能恢复它们。我不得不这样做来编辑主机文件,有时 dnscache 拒绝放手&你不能在不先杀死它的情况下更新主机,但你不能直接这样做。
答案 8 :(得分:-1)
我遇到了同样的问题。如果您不是计算机管理员,则需要以管理员身份运行服务。
答案 9 :(得分:-1)
我通过以下步骤解决了问题:
从命令/ Windows RUN打开“services.msc”。
找到服务(灰色)。
双击该服务,然后转到“恢复”标签。
确保
然后按确定。
现在,该服务不会尝试重新启动,您可以从服务列表中删除灰色服务(即灰色将消失)。