2017-09-04 115 views
-4

我在殺死進程時遇到了一點問題。我可以殺死可以直接從運行中執行的進程(例如:mspaint.exe,calc.exe),但我不能殺死無法從運行中執行的進程(例如:wmplayer.exe)在java中查殺進程

這是我所做的:

(我能殺的)

public static void main(String[] args) { 

    try {  

     Runtime.getRuntime().exec("taskkill /F /IM mspaint.exe "); 

    } catch (IOException e) { 

     e.printStackTrace(); 

    } 

(也是我不能殺的)

try { 

     //Runtime.getRuntime().exec("mspaint"); 

     String process = "C:\\Program Files (x86)\\Windows Media Player\\wmplayer.exe"; 

     Runtime.getRuntime().exec("taskkill /F /IM process "); 

    } catch (IOException e) { 

     e.printStackTrace(); 

    } 
+5

你的代碼試圖殺死一個進程named進程。 – pvg

+0

該進程包含實際進程的路徑,我無法殺死,我該如何殺死該特定路徑? –

+0

關鍵是你寫的代碼永遠不會工作,因爲你永遠不會在你正在運行的命令中包含進程名。 – pvg

回答

1

你執行一個命令來殺死一個名爲「進程」的過程,從字面上。如果你想通過名字殺死一個進程,你需要提供可執行文件的名稱而不是路徑。

String process = "wmplayer.exe"; 
Runtime.getRuntime().exec("taskkill /F /IM " + process); 

https://technet.microsoft.com/en-gb/library/bb491009.aspx

+0

雅我只能殺死進程內的system32,但我無法殺死從不同的位置運行的進程。那麼如何殺死speicifc位置的過程呢? –

-1

做這個

try { 

     //Runtime.getRuntime().exec("mspaint"); 

     String process = "C:\\Program Files (x86)\\Windows Media Player\\wmplayer.exe"; 

     Runtime.getRuntime().exec("taskkill /F /IM " +process); 

    } catch (IOException e) { 

     e.printStackTrace(); 

    } 
+0

爲什麼這一個反對票? – user641887

+0

嗨,謝謝,但這沒有解決,我想殺死從具體位置的過程 –