현재 프로세스의 응용 프로그램 도메인을 통과하는 방법

원본 링크 : http://www.cnblogs.com/VisualStudioDesigner/archive/2011/01/11/1932987.html

  닷넷 프레임 워크는 실제로 다른 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 재현

추천

출처blog.csdn.net/weixin_30698297/article/details/94790667