using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using System.Diagnostics; using System.Windows.Forms; namespace ConsoleNET { class program { /// <summary> /// 打印每个进程的PID和名称 /// </summary> /// <param name="runningProcs"></param> static void ShowProcess(Process[] runningProcs) { int i = 0; foreach(Process p in runningProcs) { i++; string info = string.Format("->PID:{0}/tName:{1}",p.Id,p.ProcessName); Console.WriteLine(info); } Console.WriteLine("共有"+i+"个进程"); Console.WriteLine("*******************************************************"); } /// <summary> /// //列出指定进程的每个线程的统计数字 /// </summary> /// <param name="pID"></param> static void EnumThreadsForId(int pID) { Process theProc = Process.GetProcessById(pID); ProcessThreadCollection theThreads = theProc.Threads; foreach (ProcessThread pt in theThreads) { string info = string.Format("->ThreadID:{0}/tThreadState:{1}/tStartTime:{2}/tPriority:{3}", pt.Id, pt.ThreadState, pt.StartTime, pt.PriorityLevel); Console.WriteLine(info); } Console.WriteLine("*******************************************************"); } /// <summary> /// 列出指定进程中的模块集合 /// /// </summary> /// <param name="pID"></param> static void EnumModsForId( int pID) { Process theProc = Process.GetProcessById(pID); ProcessModuleCollection theMods = theProc.Modules; foreach (ProcessModule pm in theMods) { string info = string.Format("->ModName:{0}", pm.ModuleName); Console.WriteLine(info); } Console.WriteLine("*******************************************************"); } /// <summary> /// 打印指定应用程序域的每个模块的友好名称和版本 /// </summary> /// <param name="ad"></param> static void PrintAllAssembliesInAppDomain(AppDomain ad) { Assembly[] loadedAssemblies = ad.GetAssemblies(); Console.WriteLine("*******Here are the assemblies loaded in {0}*****",ad.FriendlyName); foreach(Assembly a in loadedAssemblies ) { Console.WriteLine("->Name:{0}",a.GetName().Name); Console.WriteLine("->Version:{0}/n",a.GetName().Version); } Console.WriteLine("*******************************************************"); } static void Main(string[] args) { //获取本机所有进程 Process[] runningProcs = Process.GetProcesses("."); ShowProcess(runningProcs); EnumThreadsForId(1756); EnumModsForId(1756); AppDomain defaultAD = AppDomain.CurrentDomain; PrintAllAssembliesInAppDomain(defaultAD); ///在当前进程创建一个新的应用程序域 AppDomain anotherAD = AppDomain.CreateDomain("SeconedAppDomain"); PrintAllAssembliesInAppDomain(anotherAD); } } } 进程、应用程序域和程序集的关系参考 http://blog.163.com/it-bobo/blog/static/31837443200972910739726/