首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

有哪位高手知道怎么列举一个进程的所有的应用程序域

2013-10-29 
有谁知道如何列举一个进程的所有的应用程序域?查了半天的文档,发现只能得到当前的应用程序域,而不能得到一

有谁知道如何列举一个进程的所有的应用程序域?
查了半天的文档,发现只能得到当前的应用程序域,而不能得到一个进程所有的应用程序域。
痛苦,求解救。
[解决办法]
Add the following as a COM reference - ~\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscor ee.tlb



using mscoree;
 using System.Runtime.InteropServices;
 
 public void GetAllAppDomains()
         {
 
             AppDomain one = AppDomain.CreateDomain("One");
             AppDomain two = AppDomain.CreateDomain("Two"); 
            // Creates 2 app domains           
 
             List<AppDomain> appDomains = new List<AppDomain>();
 
             IntPtr enumHandle = IntPtr.Zero;
 
             CorRuntimeHostClass host = new CorRuntimeHostClass();          
 
             try
             {
 
                 host.EnumDomains(out enumHandle);
 
                 object domain = null;
 
                 AppDomain tempDomain;
 
                 while (true)
                 {
 
                     host.NextDomain(enumHandle, out domain);
 
                     if (domain == null)
                     {
                         break;
                     }
 
                     tempDomain = domain as AppDomain;
 
                     appDomains.Add(tempDomain);
 
                 }               
 
             }
 
             catch (Exception ex)
             {
                 Console.WriteLine(ex.ToString());          
             }
 
             finally
             {
                 host.CloseEnum(enumHandle);
                 int rel= Marshal.ReleaseComObject(host);
             }
 
             Assembly[] assemblies;
             foreach (AppDomain app in appDomains)
             {
                 Console.WriteLine(app.FriendlyName);
 
                 assemblies = app.GetAssemblies();
 


                 Console.WriteLine("-----------------------Assemblies------------------");
                 foreach (Assembly assem in assemblies)
                 {
                     Console.WriteLine(assem.FullName);
                 }
                 Console.WriteLine("---------------------------------------------------");
             }
 
         }

热点排行