如何确定进程是否在C#中管理?

一些搜索返回此结果: 哪些进程正在运行托管代码以及哪个版本?

但是,我想知道是否有一种“更好”的方式然后只是迭代加载的模块? 看起来字符串“mscorwks.dll”似乎有点古怪。 通过MSDN上的Process Class读取似乎并没有指出一个明显的解决方案。

做出的假设

  1. .NET 4.0
  2. 我手头有一个“过程”

谢谢

对于任何未来的Google员工:我最终使用此处发布的建议答案如何检查程序是否使用.NET? (感谢0xA3!)

Process mProcess = //Get Your Process Here foreach (ProcessModule pm in mProcess.Modules) { if (pm.ModuleName.StartsWith("mscor", StringComparison.InvariantCultureIgnoreCase)) { return true; } } 

作为一个旁边寻找我的原始post中提到的“mscorwks.dll”不适用于.NET 4.0。

在代码中,获取执行过程的完整路径。 尝试在进程上使用Assembly.Load 。 如果它工作,它是一个.Net程序集:)