닷넷 프레임 워크는 실제로 다른 AppDomain에 현재 프로세스에 대한 관리 인터페이스를하지 않았다 제공! 따라서, 우리는이 일을 수행하기 위해 베어러 인터페이스 (호스팅 인터페이스) 도움이됩니다.
에서 MSCOREE.DLL에서 닷넷 1.0 ICorRuntimeHost 다행히 EnumDomains 및 NextDomain 방법 만이있는 인터페이스를 제공합니다 : CorRuntimeHostClass : MSCOREE.DLL 실제로 직접 공공의 구현이다. 그래서, 우리는 단지에 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 프레임 워크 \ \ vXXXXXX \ mscoree.tlb
정보 MSCOREE.DLL 더 자세한 정보를 참조 .NET의 알려지지 않은 영웅 : MSCOREE.DLL를
HTTPS : //www.cnblogs.com/VisualStudioDesigner/archive/2011/01/11/1932987.html 재현