.NET Frameworkは、実際に他のAppDomain現在のプロセスに取得していない管理インタフェースを提供します!したがって、我々はこのことを達成するためにベアラ・インターフェース(ホスティングインタフェース)を助けます。
Mscoree.dllで、.NET、1.0 ICorRuntimeHostは幸いEnumDomainsとNextDomain方法を持っているのインターフェースを提供しますが、:にMscoree.dllを実際に直接公共の実装で:CorRuntimeHostClass。だから、私たちは、その後にEnumDomainsとNextDomainメソッドを呼び出すCorRuntimeHostClassを作成する必要があります。
public static IList<AppDomain> GetAppDomains()
{
IList<AppDomain> list = new List<AppDomain>();
IntPtr enumHandle = IntPtr.Zero;
CorRuntimeHostClass host = new CorRuntimeHostClass();
try
{
host.EnumDomains(out enumHandle);
object domain = null;
while (true)
{
host.NextDomain(enumHandle, out domain);
if (domain == null) break;
AppDomain appDomain = (AppDomain)domain;
list.Add(appDomain);
}
return list;
}
catch (Exception e)
{
return null;
}
finally
{
host.CloseEnum(enumHandle);
Marshal.ReleaseComObject(host);
}
}
以下のためにMscoree.dll アセンブリ参照用のCOM :参照 C:\ WINDOWS \ Microsoft.NET \ Frameworkの\ vxxxxxxは\ mscoree.tlb
にMscoree.dll より詳細な情報を参照してください.NETの陰の英雄:にMscoree.dll
ます。https://www.cnblogs.com/VisualStudioDesigner/archive/2011/01/11/1932987.htmlで再現