为另一个 .NET 框架进程获取 AppDomain

Posted

技术标签:

【中文标题】为另一个 .NET 框架进程获取 AppDomain【英文标题】:Get AppDomain for another .NET framework process 【发布时间】:2011-05-06 07:04:20 【问题描述】:

我正在尝试为我的机器上运行的所有 .NET Framework 进程获取 AppDomain。关于如何做到这一点的任何建议?

【问题讨论】:

您在这里提出了问题,或者您正在命令我们获取值?请在此处描述您的问题。 我尝试了很多通过 C# 代码获取在 .Net Framework 中运行的所有应用程序域。我欢迎你的建议。提前谢谢!!!! 这个 SO 问题可能会有所帮助:***.com/q/5290842/945456 【参考方案1】:

我不完全清楚您要做什么,但如果您想通过将 Visual Studio 附加到进程来枚举所有正在运行的 AppDomain,请参阅此链接: Jack Gudenkauf "Enumerating AppDomains"

同样,如果您想在运行时执行此操作(不使用 Visual Studio),那么您可能需要在程序中包含一个托管调试器,它允许您“附加”到另一个进程。 看一下托管调试器示例,它演示了一个用 C# 编写的调试器。然后它将允许您在目标应用程序进程中执行“扩展”,例如 Jack Gudenkauf 的文章中所做的那样。 CLR Managed Debugger (mdbg) Sample

【讨论】:

嗨 Adam 是的,我想列举当前在 .Net Framework 中运行的 AppDomain。通过 VS C#,我可以获取在单个应用程序中运行的所有 AppDomain,但不能从在 .Net Framework 中运行的所有应用程序中获取。 我建议您尝试我提到的方法,使用托管调试器源代码。它将允许您“连接”到任何 .net 进程,并枚举 AppDomains。 有没有什么好的方法可以通过进程枚举来查看哪些是.NET?这将使这个答案更好;) @Jeff - 看看这篇文章***.com/questions/943453/… - Shafqat Ahmed 的回答提供了一个代码 sn-p 应该会有所帮助。您还可以按照 Daniel Fortunov 对这个问题的回答中的描述对 'clrver' 实用程序进行外壳:***.com/questions/4336889/… FYI - 您的评论有点过时('是否加载 CLR' 与实际获得对 AppDomain 的引用不同) - 你应该将其作为新问题发布。 对,我想我们可能有误会。您的答案讨论了附加到获取AppDomain 的过程。我只是觉得更完整的答案将包括如何找到您需要附加到哪些进程(即“CLR 加载)。再说一次,我可能完全误解了这个过程;)

以上是关于为另一个 .NET 框架进程获取 AppDomain的主要内容,如果未能解决你的问题,请参考以下文章

一个 python 进程为另一个 python 进程提供信息

获取子进程的pid

如何将 UIView 框架自动调整为另一个 UIView 框架

如何从另一个 .NET 进程获取对象的句柄?

.NET (C#):只有进程句柄或 PID 时获取子窗口?

无法获取进程名称(vb.net)