2011-02-14 73 views
5

有点搜索返回这个结果:Which processes are running managed code and which version?如何确定是否在C#中管理进程?

但是我想知道是否有一个'更好'的方式,然后只是迭代,虽然加载模块?看起来有点奇怪,查找字符串“mscorwks.dll”。阅读尽管MSDN上的Process Class似乎并未指出明显的解决方案。

假设而

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

谢谢

+0

定义“托管代码”。 Java被管理,解释语言也被管理。您是否对.NET程序集或任何类型的托管代码特别感兴趣? – 2011-02-14 22:29:28

+0

我不认为它很古怪。这是核心库dll的文件名。 – Amy 2011-02-14 22:30:23

回答

5

对于任何未来的Google:我结束了使用贴在这里How to check if a program is using .NET?建议的答案

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

顺便寻找“mscorwks(感谢0xA3执行!)。如我在原来的帖子中提到的“dll”不适用于.NET 4.0。

1

在代码中,获得执行过程的完整路径。 尝试在流程上使用Assembly.Load。如果成功,这是一个.NET程序集:)

相关问题