首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何知道".exe“进程是用C++还是C#编写的?

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

Stack Overflow用户
提问于 2011-12-08 15:12:31
回答 4查看 12.5K关注 0票数 15

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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-08 15:22:32

如果您试图确定 process 是否是.NET流程,我可以从determine在本主题中的回答中提出一个解决方案:如何判断win32应用程序是否使用.NET运行时

“如果应用程序需要运行.NET,则它是mscoree.dll可执行文件。”

在此情况下,您将检查流程的模块,以查看mscoree是否被列出。

代码语言:javascript
运行
复制
        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);
            }
        }
票数 9
EN

Stack Overflow用户

发布于 2011-12-08 15:18:53

在这里您可以找到如何做到这一点的详细信息:确定DLL或EXE是托管组件

票数 5
EN

Stack Overflow用户

发布于 2011-12-08 15:14:21

您可以在文件上运行peverify或ildasm (可从Visual命令行环境中获得),如果它不是托管代码,它将给出一个错误。请注意,在某些情况下,这将失败,因为它们使用的保护系统加密IL并隐藏CLR引导加载程序,但大多数程序没有这种保护。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8433135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档