Enumerating AppDomains
Have you ever wondered how to enumerate all AppDomains in the current process? It can be done with a little COM interop...
// Add the following as a COM reference...
// C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\mscoree.tlb
using System;
using System.Collections;
using System.Runtime.InteropServices;
using mscoree;
public class AppDomainUtils
{
public static IList ListAppDomains()
{
CorRuntimeHostClass host = new CorRuntimeHostClass();
try
{
ArrayList list = new ArrayList();
IntPtr enumHandle;host.EnumDomains(out enumHandle);
while(true)
{
object domain;
host.NextDomain(enumHandle, out domain);
if(domain == null) break;
list.Add((AppDomain)domain);
}
host.CloseEnum(enumHandle);
return list;
}
finally
{
Marshal.ReleaseComObject(host);
}
}
}
This is a modified version of some code NETMaster (Thomas Scheidegger) posted.