如何知道".exe"进程是用C++还是C#编写的?

Dio*_*ogo 13 c# c++ exe

可能重复:
如何判断win32应用程序是否使用.NET运行时

有一种方法可以手动识别特定的".exe"进程是用C++(非托管代码)还是用C#(托管代码)编写的?

Kev*_*sse 8

如果你试图确定一个进程是否是一个.NET进程,我可以建议一个解决方案,灵感来自Dave Van den Eynde在这个主题中的答案:如何判断win32应用程序是否使用.NET运行时

"如果应用程序需要运行mscoree.dll,那么它就是.NET可执行文件."

鉴于此,您检查进程的模块以查看是否列出了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);
            }
        }
Run Code Online (Sandbox Code Playgroud)


HAB*_*JAN 5

在这里,您可以找到有关如何完成的详细信息:确定DLL或EXE是否为托管组件