一番搜索之后,找到了这个结果:哪些进程正在运行托管代码以及它们的版本?。然而,我在想是否有比简单地迭代已加载模块更好的方法?查看 MSDN 上的Process Class并没有指出明显的解决方案。假设如下:1. .NET 4.0;2. 我手头上有一个“进程”。谢谢。
对于未来的谷歌搜索者:我最终使用了在这里发布的建议答案 如何检查程序是否正在使用.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。
return process.Modules.Cast<ProcessModule>().Any(module => module.ModuleName.StartsWith("mscor", StringComparison.InvariantCultureIgnoreCase));
。 - MasterMasticAssembly.Load
。如果成功了,那么它就是一个 .Net 程序集 :)