Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确定可执行文件在C中是64位还是32位#_C#_.net_Header_64 Bit_Exe - Fatal编程技术网

C# 确定可执行文件在C中是64位还是32位#

C# 确定可执行文件在C中是64位还是32位#,c#,.net,header,64-bit,exe,C#,.net,Header,64 Bit,Exe,我正在寻找一种解决方案来确定给定的可执行文件是64位还是32位 正在测试的可执行文件可能是基于.NET的,也可能不是 我见过多种不同的技术,不确定其中一种与另一种有什么不同 我所看到的技巧如下: 使用dumpbin.exe(随Visual Studio或Windows SDK提供) Win32函数GetBinaryType 检查文件的标题(如本Q中所示) 最可靠的方法是什么?我知道有两种方法: 1.如果您需要在运行时检查它:使用IsWow64Process。 如果是x86进程,则返回tru

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

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

我见过多种不同的技术,不确定其中一种与另一种有什么不同

我所看到的技巧如下:

  • 使用dumpbin.exe(随Visual Studio或Windows SDK提供)
  • Win32函数GetBinaryType
  • 检查文件的标题(如本Q中所示)

最可靠的方法是什么?

我知道有两种方法:
1.如果您需要在运行时检查它:使用IsWow64Process。
如果是x86进程,则返回true,否则返回false。
2.如果需要在非运行时检查,只需检查EXE PE格式。
如果NT头->可选头->魔术==图像\u NT\u可选\u HDR64\u魔术
它是一个x64exe/dll

你为什么要寻求一种健壮的方法——要么有效,要么无效,对吧?阅读这篇文章,希望这对你有所帮助。对于.NET可执行文件来说,没有可靠的方法可以做到这一点。任何一个CPU意味着它所说的,它可以是任何一个。比特率是在运行时确定的,但可以知道编译后的程序是否被强制运行32或64体系结构。