我已经创建了Windows服务,并且在控制面板中的服务->管理工具->服务中,其状态正在开始。
我想停止此服务,但“停止”选项显示为灰色。如何启动/停止服务?
每次重新启动时,它都会停止,可以删除它。
我已经创建了Windows服务,并且在控制面板中的服务->管理工具->服务中,其状态正在开始。
我想停止此服务,但“停止”选项显示为灰色。如何启动/停止服务?
每次重新启动时,它都会停止,可以删除它。
Answers:
如果运行命令:
sc queryex <service name>
其中的服务名称,而不是显示名称(假脱机程序,而不是打印假脱机程序),在cmd提示符下,它将返回运行该服务的进程的PID。取得该PID并运行
taskkill /F /PID <Service PID>
强制PID停止。有时,如果在停止GUI的过程中挂起,则无法使用该服务执行任何操作。
sc ..
因此我将进程定位在该服务的属性中,Path to executable
并在taskmgr中将其杀死。
您可以在一行中完成此操作(适用于ci环境):
taskkill /fi "Services eq SERVICE_NAME" /F
筛选->服务-> ServiceName等于SERVICE_NAMES->强制
来源:https : //technet.microsoft.com/en-us/library/bb491009.aspx
如果停止选项显示为灰色,则您的服务SERVICE_ACCEPT_STOP
在上次调用时未表明它正在接受SetServiceStatus
。如果使用的是.NET,则需要在中设置CanStop
属性ServiceBase
。
当然,如果您接受停止请求,则最好确保您的服务可以安全地处理这些请求,尤其是在您的服务仍在通过其启动代码进行的情况下。
使用任务管理器查找服务,然后使用“结束任务”从那里杀死它。 总是对我有用。
如果您自己制作了服务,请考虑从OnStart事件中删除长时间运行的操作,通常这是导致服务无响应的原因。
正如上面的Aaron所述,某些服务在开发时就不接受SERVICE_ACCEPT_STOP
消息。并将其硬编码到可执行文件中。期。一种工作方式是不要启动它,并且由于您无法更改其属性,因此请强制执行以下操作:
如果您无法更改条目,请在左窗格上右键单击您的服务名称,选择“权限”,检查“所有人”是否具有完全访问权限,然后重试步骤4。
不要忘记再次从msconfig禁用安全启动,然后重新启动!
打开具有管理员访问权限的命令提示符,然后在其中键入以下命令。
一种)
tasklist
它显示所有可用服务的列表。在这里,您可以看到要停止/启动/重新启动的服务。记住要强制停止的服务的PID值。
b)现在输入
taskkill /f /PID [PID value of the service]
然后按回车。成功后,您将收到消息“成功:具有PID的过程已终止”。
Ex : taskkill /f /PID 5088
这将强行终止冻结的服务。现在,您可以返回服务器管理器并重新启动服务。
我通过以下步骤解决了这个问题:
从命令/ Windows RUN中打开“ services.msc”。
查找服务(显示为灰色)。
双击该服务,然后转到“恢复”选项卡。
确保这件事
然后按确定。
现在,该服务将不会尝试重新启动,您可以从服务列表中删除变灰的服务(即变灰的将消失)。