結束普通方法沒法結束的進程

 使用ntsd程序 (若是安裝過VS,在VS的安裝目錄下,好比「C:\Program Files (x86)\Debugging Tools for Windows (x86)\ntsd.exe」,也能夠在這裏下載windows

ntsd -c q -p PID
ntsd -c q -pn PName

兩種方法spa

一種是使用進程的ID號,將PID換成對應進程ID號便可debug

一種是使用進程的名稱,將PName換成對應的exe名字便可,好比notepad.execode

爲了方便,寫了個批處理,將該批處理和ntsd放在一塊兒,使用時執行批處理,選擇對應的方式,並輸入參數便可。blog

@ECHO OFF
TITLE 結束使用普通方法沒法結束的進程
COLOR 0A
MODE con: COLS=62 LINES=22

:MENU
set tm1=%time:~0,2%
set tm2=%time:~3,2%
set tm3=%time:~6,2%
ECHO.  %date% %tm1%點%tm2%分%tm3%秒 
ECHO.   ========================================
ECHO.   請選擇要進行的操做,而後按回車
ECHO.   ────────────────────
ECHO.  1    根據進程號PID結束進程
ECHO.  2    根據進程名稱結束進程

ECHO.  0    退出
ECHO.
ECHO.請輸入選擇項目的序號:

set /p choose=
if "%choose%" equ "" goto MENU
if %choose%==1 goto killusingpid
if %choose%==2 goto killusingname
if %choose%==0 goto END

ECHO. 輸入錯誤,請輸入正確的項目序號:
goto MENU

:killusingpid
set choose=
ECHO.請輸入進程號PID,而後按回車
set /p proid=
set /a i=0
:kpid
ntsd -c q -p %proid%
if %i% GEQ 10 ( ( echo 結束進程%proid%失敗 ) & goto MENU )
set /a i=%i%+1
echo 結束進程%proid%第%i%次
tasklist | findstr /i %proid% && ( goto kpid )
echo 結束進程ID爲%proid%的程序成功或進程ID:%proid%不存在
GOTO MENU

:killusingname
set choose=
ECHO.請輸入進程的名稱(好比notepad.exe),而後按回車
set /p proname=
set /a i=0
:kpname
ntsd -c q -pn %proname%
if %i% GEQ 10 ( ( echo 結束程序%proname%失敗 ) & goto Menu )
set /a i=%i%+1
echo 結束程序%proname%第%i%次
tasklist | findstr /i %proname% && goto kpname
echo 結束程序%proname%成功或程序:%proname%未啓動

GOTO MENU

:END
exit

 

 

 

 

參考:進程

https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/cdb-command-line-optionsget

相關文章
相關標籤/搜索