2015-02-09 188 views
0

我最近開始學習VB.NET,我想知道是否有一種簡單的方法可以殺死所有VB.NET應用程序使用的進程,例如我創建了一個表單一個給定的IP地址,這應用程序創建過程cmd.exe和發送的Ping說法,這又產生以下過程:VB.NET - 殺死進程

  • cmd.exe的
  • conhost.exe
  • PING.EXE

如果我Kill()主要過程它殺死cmd.exe但不conhost.exe也不ping.exe,我需要手動殺死這些嗎?通過關閉主進程將不會自動關閉相關進程?如果這是有道理的。另一件我不明白的地方,我嘗試使用Close(),但似乎沒有發生,所有進程都繼續運行。我希望能夠讓用戶關閉窗體並關閉所有關聯進程。

+0

對我來說聽起來很腥,就像這裏的特洛伊木馬活動一樣......但是一般來說,只要兒童進程被殺死......他們是子進程,你看着正確的父進程。如果沒有「發生」,那麼也許沒有什麼可以發生。你讀過文檔嗎?也許這個過程是以不同於你想象的方式產生的...... – 2015-02-09 23:02:29

+3

這就是你如何從惡化到惡化。不要使用ping.exe,請使用System.Net.NetworkInformation.Ping類。 – 2015-02-09 23:20:07

回答

0

它是很多更好地使用System.Net.NetworkInformation.Ping類來執行ping(如Hans Passant所述)。

通常,如果您使用proc = System.Diagnostics.Process.Start(...),您應該能夠使用proc.kill殺死進程及其子進程。但是,一個進程可能啓動其他進程不會立即用kill終止。出於多種原因,手動終止剩餘流程將是一個糟糕的主意。