如何判断一个Win32应用程序是否使用了.NET运行时?

6

如何判断一个可执行文件是否为.NET应用程序?

我希望不必安装Visual Studio,但如果必须的话,我会安装。最好使用命令行程序。


从技术上讲,它要么是一个.NET应用程序,要么是一个Win32应用程序。 - Dead account
1
相反,每个.NET应用程序都是一个引导.NET Runtime的Win32应用程序。 - Dave Van den Eynde
一个 .Net 的“可执行文件”更像是一个自动执行的压缩文件。这个可执行文件包含了你的源代码和一个小的 Win32 程序,它会启动 .Net 编译器,然后从可执行文件中提取源代码,编译并运行它。基本上它就是一个假的可执行文件。 - William Egge
8个回答

12

PEVerify会做到这一点 :)


11

如果一个应用程序需要mscoree.dll来运行,那么它就是一个.NET可执行文件。你可以使用Dependency Walker来检查这个,但通常任何能够提供所需DLL列表的工具都可以。

如果你想知道一个正在运行的进程是否是.NET进程,我只能推荐使用Process Explorer。这个工具将会给你大量有关进程的信息,包括一些.NET属性。


您所引用的网站存在损坏的链接。 - Christopher J Smith
2
@ChristopherJSmith 的确如此,但网站本身仍在运作。我建议你与网站维护者联系。 - Dave Van den Eynde

6

或者更简单的方法是使用Process Explorer。可以在这里免费下载


6
进程管理器默认使用黄色来标记dotNet应用程序。这应该足够了 :)

2

把它拖到Reflector中,它将被反编译。


2

您可以使用默认与在您的计算机上安装.Net Framework SDK一起安装的ILDasm.exe(请查看C:\ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin)。只需打开ildasm.exe并将程序集拖入其中,如果它被反汇编为.net,则是一个.net程序集,如果出现错误,则不是。


2

更简单的方法:

  1. 打开属性,查看“版本”选项卡,如果在“其他信息”下看到一个名为“程序集版本”的属性,则很可能是.NET应用程序。

  2. 使用记事本或类似应用程序打开EXE或DLL文件,查找文本“mscorlib”(不带引号)。 如果找到它,则很可能是.NET应用程序。


1
我更倾向于不安装Visual Studio。但是如果必须的话,我会安装它。命令行程序更受欢迎。
您不需要安装Visual Studio来运行.NET应用程序,只需要单独下载.NET框架即可。
但是,如果您想确定一个应用程序是否为.NET应用程序,您可以下载并使用.NET反编译器(.NET Reflector)或使用随附.NET框架SDK的ILDasm。

ILDasm来自.NET Framework SDK,可以免费下载,不需要Visual Studio。 - Dave Van den Eynde

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接