gpt4 book ai didi

c++ - 如何确定 exe 文件是 .Net exe 还是常规 exe?

转载 作者:可可西里 更新时间:2023-11-01 13:50:41 28 4
gpt4 key购买 nike

不是以下 SO 问题的重复: How do I tell if a win32 application uses the .NET runtime .

如果给定的 exe 文件是 .net exe 文件还是常规的 WIN32/WIN64 exe 文件,我如何以编程方式找出?

问题不是关于询问正在运行的进程,而是关于一个 exe 文件,正如标签所暗示的,不需要用 VB.net 或 C# 编写的解决方案。

我需要一个带有签名的函数,例如:

// return true if filename is a exe file for .Net
bool IsExeFileDotNet(LPCTSTR filename)
{
...
}

最佳答案

一种方法是询问 PE header 等以获取正确的标志。有几个链接可供进一步阅读; herehere (以及较早的 MSDN 文章 here)。

关于 PE header 的 MS 文档 is available (with a license agreement) .

最简单的可能就是 list the dependent dlls (因为这仅适用于主 exe)并查找 mscoree.dll 是否存在。导入表将包含 mscoree.dll 以及函数 _CorExeMain 的包含和条目(来自 mscoree.dll)。可以找到更多关于此的链接 here on SOhere on GitHub, that appears to be an extensive sample , 和 this article (on CodeGuru)带有您需要的签名 BOOL IsManaged(LPTSTR lpszImageName) 的函数代码(许可证似乎限制重新发布)。

关于c++ - 如何确定 exe 文件是 .Net exe 还是常规 exe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36569710/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com