我有這種情況,一臺裝有Windows XP的舊電腦作爲系統的服務器工作,並且有可能在出現問題時向我發送警報。但是,我們使用的這個服務器程序真的很麻煩,並且可能在某個特定時刻停止關注警報。然後這些警報堆積起來,並在程序最終重新啓動時立即全部發送。這使得這些警報非常無用,因爲當你重新啓動程序時,你已經知道系統有問題。從批處理文件中殺死Windows 16位進程
我想要的解決方案是Windows Task Scheduler每晚都可以殺死,然後在簡單批處理文件的幫助下重新啓動程序。雖然我似乎無法找到殺死進程的方法,因爲程序的進程是作爲Windows進程csrss.exe的子進程,子進程運行的。
如果我打開任務管理器,我可以看到該進程並殺死它,但命令tasklist
僅顯示父進程csrss.exe,並且我需要PID用taskkill
殺死它。是的,tasklist
確實有殺死子進程的額外參數/t
,但我需要一種方法來只殺死子進程,並且使Windows csrss.exe顯然不可或缺。
所以我的問題是:有誰知道如何殺死一個批處理文件的幫助下的子進程?
這當然可以通過編寫一個特定的程序來完成,然後讓批處理文件使用該程序,但我希望能夠快速修復。
到目前爲止,我有:
TASKLIST /FI "IMAGENAME eq program.exe" 2>NUL | FIND /I /N "program.exe">NUL
IF NOT %ERRORLEVEL%==0 GOTO :restart
TASKKILL /FI "IMAGENAME eq program.exe" /F /T
:restart
START /D "C:\path\" program.exe
編輯:
我剛剛意識到一個進程的圖像名稱沒有在任務管理器縮進,因爲它是另一個進程的子進程,但由於這是一個16位的過程(非常直觀)。所以,這是一個16位的進程,現在的問題是如何找到一個PID,或者以其他方式殺死一個16位進程。正如我所提到的,Tasklist
沒有顯示它,也沒有顯示pslist
。
您需要回答的問題:「爲什麼沒有任務列表顯示我的過程?」這是一個16位程序嗎?你是否嘗試過使用pslist而不是tasklist? –
是的,這是一個16位的進程 - 爲什麼tasklist沒有顯示任何內容?有沒有辦法顯示16位進程?我試圖安裝pstools和pslist,但它也找不到該過程。 – Muuse
我不知道是否有預先製作的東西,但[這些](http://support.microsoft.com/kb/182559/en)應該是用於管理在NT-family下運行的16位任務的相關API Windows版本。 –