C#结束进程树
来源:互联网 发布:python genetic 编辑:程序博客网 时间:2024/05/01 02:37
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));
//不能结束自己
if(parent.Id != Process.GetCurrentProcess().Id)
parent.Kill();//结束当前进程
}
/// <summary>
/// 结束指定进程和它的进程树(所有子进程)
/// </summary>
/// <param name="pid">进程Id</param>
public static void KillProcessTreeById(int pid)
{
try
{
var process = Process.GetProcessById(pid);//获取当前进程
try
{
process.KillProcessTree();//结束进程树
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
catch
{
Console.WriteLine("failed to get the process!");
var searcher = new ManagementObjectSearcher("Select * From Win32_Process Where ParentProcessID=" + pid);
var moc = searcher.Get();
foreach (ManagementObject mo in moc)
{
Process childProcess = Process.GetProcessById(Convert.ToInt32(mo["ProcessID"]));//通过子进程ID获取该进程实例
childProcess.KillProcessTree();//调用拓展方法结束当前进程的所有子进程
}
}
}
}
0 0
- C#结束进程树
- c# 结束进程树实现
- C#列举结束进程
- C#结束Excel进程
- C# 结束所有进程
- c# 结束进程
- C#结束进程的例子,结束explorer
- C# 启动和结束进程
- C# 结束任务栏指定进程
- C#之结束指定进程!...
- C#结束进程通用方法
- C#中获取进程,结束进程
- C#获取进程、查找并结束进程
- 结束进程树
- C#程序中:如何启用进程、结束进程、查找进程
- C#中获取进程,C#强制结束进程
- c#启动和结束外部进程
- C# 查找、结束进程 - 通过进程名精确、模糊查找、结束进程
- 使用外部容器运行spring-boot项目:不使用spring-boot内置容器让spring-boot项目运行在外部tomcat容器中
- 知识点归总
- 【Shoi2007】bzoj 1935 园丁的烦恼
- Max Sum(第一周J题)
- iOS中旋转加载动画的实现
- C#结束进程树
- 常用的shell命令
- java实现并发搜索数组元素
- HDU 5900 QSC and Master(区间dp)
- 双飞翼和圣杯布局
- SPS、PPS、IDR
- MD5加密
- 简单的imageloader
- SQL语言总结