工作中有时需要启动和停止windows service,有时候会出现服务处于stopping或者starting的状态,但是,在services界面中,start service/stop service已经处于灰色不可操作状态,用命令行的形式net start/stop servicename也无济于事。停止服务的方法就是关掉这个进程,但是很多时候无法确定是哪个进程与之相关。在命令行中我们可以使用sc queryex servicename这个命令来获得该服务的相关信息。

For example,

Run 'sc queryex WebsenseDCAgent' in command prompt

The output is below,

SERVICE_NAME: WebsenseDCAgent    
        TYPE               : 10  WIN32_OWN_PROCESS    
        STATE              : 3  STOP_PENDING    
                     (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)    
        WIN32_EXIT_CODE    : 0  (0x0)    
        SERVICE_EXIT_CODE  : 0  (0x0)    
        CHECKPOINT         : 0x0    
        WAIT_HINT          : 0x1d4c8    
        PID                : 4488    
        FLAGS              :

查看到此服务的进程号以后我们可以用命令 'taskkill /PID 4488 /F' 来强制结束此服务的进程. /F means 'kill forcely'.

Windows OS中处于stopping状态的Windows Services处理方法_Microsoft Windows Se

过一会儿我们再查看服务的状态它会自动再运行,OK大功告成

Windows OS中处于stopping状态的Windows Services处理方法_Microsoft Windows Se_02

补上hyy1988说的方法:就是 在 Service上点右键有个 Go to Process,会转到这个Service依赖的进程上,Kill掉,完事。

Windows OS中处于stopping状态的Windows Services处理方法_Microsoft Windows Se_03

 Windows OS中处于stopping状态的Windows Services处理方法_Microsoft Windows Se_04

 

sc功能很强大,具体可以参考下面的链接:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/sc.mspx?mfr=true