【问题标题】:Determine if an executable is 64-bit or 32-bit in C# [duplicate]在 C# 中确定可执行文件是 64 位还是 32 位 [重复]
【发布时间】:2012-10-20 20:30:52
【问题描述】:

我正在寻找一种解决方案来确定给定的可执行文件是 64 位还是 32 位。

被测试的可执行文件可能是基于.NET的,也可能不是。

我见过多种不同的技术,但不确定其中一种与另一种有何不同。

我见过的技术列表:

最可靠的方法是什么?

【问题讨论】:

  • 你为什么要一个健壮的方法 - 他们要么工作要么不工作,对吗??
  • 阅读superuser.com/questions/358434/…希望这对你有帮助
  • 对于 .NET 可执行文件没有可靠的方法来执行此操作。 AnyCPU 意味着它所说的,它可以是任何一个。位数在运行时确定。
  • 但是可以知道编译后的程序是强制运行32位还是64位架构。

标签: c# .net header 64-bit exe


【解决方案1】:

我知道有两种方法:
1. 如果需要在运行时检查:使用 IsWow64Process。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms684139(v=vs.85).aspx?ppud=4
如果它是 x86 进程 - 它将返回 true,否则 - false。
2. 如果您需要在运行时检查它,只需检查 EXE PE 格式即可。
如果 NT Header -> Optional header->Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC 这是一个 x64 exe/dll。

【讨论】:

    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 2011-04-19
    相关资源
    最近更新 更多