.net - CLR 托管。如何在 .net 4 中枚举 _AppDomains

标签 .net clr unmanaged clr-hosting

我有用 C 编写的非托管 dll,它将被注入(inject)托管应用程序 (dotNet 4)。我将枚举 _AppDomains,在此应用程序中运行以将一些模块加载到域中。可以使用 ICorRuntimeHost 接口(interface)执行此操作。但是,ICorRuntimeHost 已弃用,并且(如 http://msdn.microsoft.com/en-en/library/ms164320%28v=vs.100%29.aspx 中所述)替换为 ICLRRuntimeHost

如何使用 ICLRRuntimeHost 执行 _AppDomain 枚举?可能吗?

最佳答案

调试接口(interface)中有ICorPublish .

您可以使用 ICorPublish::GetProcess()检索 .NET 进程的 ICorPublishProcess 实例的方法(通过传递相应的进程 ID 来标识,当然,它可以是当前进程的 ID)。

该接口(interface)提供方法ICorPublishProcess::EnumAppDomains() ,您可以使用它获取目标进程中当前应用程序域的列表,通过枚举器到 ICorPublishAppDomain 实例。每个都有 ICorPublishAppDomain.GetName()获取应用程序域名称的方法。

更新:我没试过这个,但是怎么样:

Microsoft All-In-One Code Framework 中似乎有一个至少相关的示例 (CppHostCLR)在 codeplex.com 上

关于.net - CLR 托管。如何在 .net 4 中枚举 _AppDomains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15478975/

相关文章:

c# - 将时间保存到 SQL 数据库中

c# - ASCII编码和编码之间的区别

.net - 使用多个文件作为资源管理器的参数打开程序一次

c# - .NET Framework 中的哪些托管类分配(或使用)非托管内存?

dll - 在哪里放置非托管库的 dll?

c# - 服务器违反了协议(protocol)。 Section=ResponseHeader Detail=CR 后面必须跟着 LF

c# - 程序集文件重命名和 Assembly.LoadFile

c# - 我如何获得对所有托管线程的引用

.net - CLR 何时在 .NET 进程中加载​​程序集?

c# - 'ShowSUM' : __declspec(dllexport) cannot be applied to a function with the __clrcall calling convention