.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# - 当通过 PInvoke 传递托管 byte[] 数组以供 Win32 填充时,是否需要固定它?

c# - WeakReference 在 Debug 和 Release 中表现不同(没有附加调试器)。即使使用工厂方法

c++ - 如何将 System::Drawing::Image^ 转换为无符号字符

c++ - 将非托管 C++ 方法传递给 C# dll 进行回调

c# - 从 JavaScript 设置的 HiddenField 不持久

c# - 如何检查 c#.net 应用程序中所有静态对象的内存使用情况

c# - 依赖注入(inject)和缓存类最佳实践

c# - System.Drawing 对象非托管资源处理

vb6 - VB6 有 linq 表达式吗?

c# - 如何在 Internet Explorer 的网页上从 javascript 调用 .Net 控件或类库?