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

aol*_*wka 5 c# process

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

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

做出的假设

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

谢谢

aol*_*wka 6

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

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

另外,在我的原始帖子中提到的"mscorwks.dll"不适用于.NET 4.0.