可能重复: 如何判断win32应用程序是否使用.NET运行时
有一种方法可以手动识别特定的".exe“进程是用C++(非托管代码)还是用C#(托管代码)编写的?
发布于 2011-12-08 15:22:32
如果您试图确定 process 是否是.NET流程,我可以从determine在本主题中的回答中提出一个解决方案:如何判断win32应用程序是否使用.NET运行时
“如果应用程序需要运行.NET,则它是mscoree.dll可执行文件。”
在此情况下,您将检查流程的模块,以查看mscoree是否被列出。
foreach (var process in Process.GetProcesses())
{
if (process.Modules.OfType<ProcessModule>().Any(m => m.ModuleName.Equals("mscoree.dll", StringComparison.OrdinalIgnoreCase)))
{
Console.WriteLine("{0} is a .NET process", process.ProcessName);
}
}
发布于 2011-12-08 15:18:53
在这里您可以找到如何做到这一点的详细信息:确定DLL或EXE是托管组件
发布于 2011-12-08 15:14:21
您可以在文件上运行peverify或ildasm (可从Visual命令行环境中获得),如果它不是托管代码,它将给出一个错误。请注意,在某些情况下,这将失败,因为它们使用的保护系统加密IL并隐藏CLR引导加载程序,但大多数程序没有这种保护。
https://stackoverflow.com/questions/8433135
复制相似问题