如何找出某进程的关联进程,并关闭他们?

解决方案 »

  1.   

    Process[] ps=Process.GetProcessByName("qq.exe");foreach(Process p in ps)
    {
       p.Kill();
    }
      

  2.   

    Windows does not maintain exact process relationships.
    For example:A spawns B, B spawns C
    B is killed, then A and C have no relation to each other.
      

  3.   

    那process viewr软件是如何列出进程树的?
      

  4.   


    先做一个实验:
    1、打开一个命令行窗口(运行 -> cmd -> 回车),
    2、在命令行窗口中用start cmd再生出一个命令行窗口,
    3、在第二个命令行窗口中用notepad.exe运行记事本,
       这时你可以看到一个‘进程树’
    4、关闭第二个命令行窗口。
       这时你可以看到那个‘进程树’已经不见了。Windows并不维护进程间的父子关系链,而是提供了另外一个妥协的办法 - Job对象。
    你可以自己维护相关的多个进程,或把多个进程放入一个Job对象中,以便统一管理。
    具体API可以参考
    CreateJobObject()
    AssignProcessToJobObject()
    TerminateJobObject()
    ...