/// <summary>
/// 结束进程和相关的子进程
/// </summary>
/// <param name="pid">需要结束的进程ID</param>
public static void KillProcessAndChildren(int pid)
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Process Where ParentProcessID=" + pid);
foreach (ManagementObject mo in searcher.Get())
{
KillProcessAndChildren(Convert.ToInt32(mo["ProcessID"]));
}
Process proc = Process.GetProcessById(pid);
proc.Kill();
}
catch (Exception ex)
{
MessageBox.Show(ex+"");
}
}
这个方法 依赖于ManagementObjectSearcher 这个方法只支持到 .net4.8
C:\Windows\Microsoft.NET\Framework64\v4.0.30319/WMINet_Utils.dll 需要有有这个文件
// 也可以杀死关联程序的子线程 暂时没遇到问题
Process proc = Process.GetProcessById(pid);
proc.Kill(true);