C#下查找並殺死子進程(進程樹)


參考:如何殺死進程及子進程

/**
 * 傳入參數:父進程id
 * 功能:根據父進程id,殺死與之相關的進程樹
 */
public static void KillProcessAndChildren(int pid)
{
     ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Process Where ParentProcessID=" + pid);
     ManagementObjectCollection moc = searcher.Get();
     foreach (ManagementObject mo in moc)
     {
         KillProcessAndChildren(Convert.ToInt32(mo["ProcessID"]));
     }
     try
     {
         Process proc = Process.GetProcessById(pid);
         Console.WriteLine(pid);
         proc.Kill();
     }
     catch (ArgumentException)
     { 
        /* process already exited */
     }
}

  常用的Process方法:

//1.根據進程id,獲得進程
Process p = Process.GetProcessById(100);
//2.獲取當前進程
Process p = Process.GetCurrentProcess();
//3.根據進程名字獲取進程,返回的結果是一個數組
Process p = (Process.GetProcessesByName("DriverEasy"))[0];

  

      特別聲明:因為代碼中使用到了 ManagementObjectSearcher,如果在Visual Studio中即使引入了

                   命名空間,還是提示無法找到相應的類的話,那么按下面說的來做,

                   第一步:在項目上鼠標右鍵 -> add -> Reference

                            

                      第二步:找到 System.Management,把它前面的勾打上

                           

                 OK了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM