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

时间:2011-02-14 22:24:24

标签: c# process

一些搜索会返回此结果:Which processes are running managed code and which version?

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

假设

  1. .NET 4.0
  2. 我手头有“过程”
  3. 谢谢

2 个答案:

答案 0 :(得分:6)

对于任何未来的Google员工:我最终使用此处发布的建议答案How to check if a program is using .NET?(感谢0xA3!)

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

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

答案 1 :(得分:1)

在代码中,获取执行过程的完整路径。 尝试在流程中使用Assembly.Load。如果它有效,那就是.Net程序集:))