ManagementObjectSearcher在System.Management命名空间中。
public static class ProcessEx
{/// <summary>
/// 结束进程树
/// </summary>
/// <param name="parent">父进程</param>
public static void KillProcessTree(this Process parent)
{
var searcher = new ManagementObjectSearcher("Select * From Win32_Process Where ParentProcessID=" + parent.Id);
var moc = searcher.Get();
foreach (ManagementObject mo in moc)
{
Process childProcess = Process.GetProcessById(Convert.ToInt32(mo["ProcessID"]));//通过子进程ID获取该进程实例
childProcess.KillProcessTree();//调用拓展方法结束当前进程的所有子进程
}
Console.WriteLine(string.Format("kill process by id {0}!", parent.Id));
//不