You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制终止卡在启动阶段的Windows服务进程?

问题描述

启动Windows服务时出现故障:服务持续卡在启动阶段,关联进程无法终止。已知重启服务器可解决问题,但承载业务的服务器不支持高频次重启,且运行环境明确禁止安装、使用Process Explorer类第三方工具软件。

已在管理员权限下尝试多种进程终止操作,均执行失败,返回信息如下:

taskkill /f /pid 7788
ERROR: The process with PID 7788 could not be terminated.
Reason: Access is denied.

C:\Windows\system32>wmic
wmic:root\cli>process where name="ProcesName.exe" delete
Delete '\\xxxxx\ROOT\CIMV2:Win32_Process.Handle="7788"' (Y/N/?)? y
Deleting instance \\xxxxx\ROOT\CIMV2:Win32_Process.Handle="7788"
ERROR:
Description = Access denied
wmic:root\cli>


C:\Windows\system32>wmic
wmic:root\cli>process where name="ProcesName.exe" call terminate
Execute (\\xxxxx\ROOT\CIMV2:Win32_Process.Handle="7788")->terminate() (Y/N/?)? y
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
        ReturnValue = 2;
};

wmic:root\cli>


C:\Windows\system32>taskkill /IM "ProcessName.exe" /T /F
ERROR: The process with PID 7788 (child process of PID 680) could not be terminated.
Reason: Access is denied.

C:\Windows\system32>tasklist | findstr 680
services.exe                   680 Services                   0      9 084 K
java.exe                      5832 Services                   0    443 680 K

从返回信息可确认,卡住的进程父进程为PID 680的services.exe,属于服务控制管理器托管的服务进程,直接调用用户态进程终止接口返回拒绝访问,本质是当前运行命令的管理员身份权限层级不足,或进程被服务控制管理器的句柄锁定。

解决步骤(全部使用Windows系统自带工具,无需安装第三方软件)
  • 优先通过服务控制命令处理,不要直接杀进程
    先执行sc queryex找到对应卡住服务的准确服务名,先尝试执行sc stop <你的服务名>下发停止指令。如果停止指令无响应,先执行sc config <你的服务名> start= disabled将服务设为禁用,避免服务控制管理器反复自动拉起进程,再执行sc delete <你的服务名>将服务标记为待删除,断开服务控制管理器对挂死进程的句柄持有。
  • 用SYSTEM权限执行进程终止
    普通本地管理员权限低于系统服务默认运行的NT AUTHORITY\SYSTEM权限,无法终止同层级权限的进程,可通过系统自带的计划任务功能拉起SYSTEM权限的终止命令,无需第三方工具:
    1. 执行以下命令创建临时计划任务:
      schtasks /create /tn "kill_temp" /tr "cmd.exe /c taskkill /f /pid 7788" /sc once /st 00:00 /ru "SYSTEM" /rl HIGHEST
      
    2. 立即触发任务执行:
      schtasks /run /tn "kill_temp"
      
    3. 等待10秒后执行tasklist | findstr 7788确认进程是否消失,确认后删除临时任务:
      schtasks /delete /tn "kill_temp" /f
      
  • 若以上操作仍无法终止,说明进程在内核态持锁挂死
    直接运行系统自带的资源监视器resmon.exe,在「CPU」标签页找到PID 7788的进程,展开下方「关联的句柄」列表,找到对应服务关联的锁句柄,右键选择「结束句柄」释放内核锁,之后再执行SYSTEM权限的taskkill命令即可正常终止进程,全程不需要重启服务器。进程终止后如果需要恢复服务,重新注册对应服务、恢复启动类型配置即可。

注意:wmic执行terminate方法返回ReturnValue=2是标准的权限不足错误,不需要额外排查其他逻辑问题,优先提升执行权限即可解决90%以上的同类问题。

内容的提问来源于stack exchange,提问作者majan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:24:41