How to tell if a .exe file is a 32-bit or 64-bit application using dumpbin
Goodfolk,
One of my customers wanted to know if they had really built a 64-bit application for their cluster. After all, we run WIndows HPC Server on a 64-bit server OS, so why not take full advantage of it?
I had a few minutes before I had to get back to them so I thought I'd try to polish the answer a bit. Here's what I told him: "Dumpbin is your friend."
Here's what I then provided as a really simple 'tool'. A one liner actually. If and only if you have
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64
in your path. See my blog on compiling with Visual Studio from Powershell. This works fine from the old command line shell as well.
------------------------------------------------------------------------------------------------------------------------------------------------------
Windows PowerShell
Copyright (C) 2006 Microsoft Corporation. All rights reserved.
PS C:\Home\fchism> .\pVSvars.ps1
PS C:\Home\fchism> cd PGI
PS C:\Home\fchism\PGI> dir
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Home\fchism\PGI
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2/17/2009 2:54 PM OSBench
d---- 2/10/2009 4:17 PM POP_PVF
-a--- 3/26/2009 4:59 PM 135680 Hi.dwf
-a--- 3/26/2009 4:59 PM 391168 Hi.exe
-a--- 2/11/2009 11:00 AM 73 Hi.f
-a--- 3/26/2009 4:59 PM 1436672 Hi.pdb
-a--- 2/10/2009 4:31 PM 175156824 pgivfx64-vs2008-803.exe
-a--- 2/10/2009 10:34 AM 1123401 pgi_whitepaper_unix2win.pdf
-a--- 2/10/2009 4:08 PM 3526334 POP_PVF.zip
PS C:\Home\fchism\PGI> dumpbin /headers Hi.exe|findstr "magic machine"
8664 machine (x64)
20B magic # (PE32+)
PS C:\Home\fchism\PGI> cd C:\UnixUtilities
PS C:\UnixUtilities> dumpbin /headers zsh.exe|findstr "magic machine"
14C machine (x86)
32 bit word machine
10B magic # (PE32)
PS C:\UnixUtilities> cd ..\Home\fchism
PS C:\Home\fchism> more pVSvars.ps1
# Set up Visual Studio Variables for Powershell
--------------------------------------------------------------------------------------------------------------------------------------------------
A magic machine indeed! You can get dumpbin with any version of Visual Studio. If you don't have a commercial version go to https://www.microsoft.com/express/ .
Well short but I hope you find this to be a sweet hack.
Frankie
Comments
- Anonymous
January 01, 2003
You can check the magic number and PE header.
http://metadataconsulting.blogspot.ca/2014/06/determining-if-app-executable-is-32-bit.html - Anonymous
April 04, 2011
The comment has been removed - Anonymous
August 26, 2011
If you have a hex editor program, just open your file with it and shortly after the standard header intro stuff (like "This program cannot be run in DOS mode...") you will see either "PE..L" (hex code: 504500004C) = 32 bit or "PE..d†" (hex code: 504500006486) = 64 bit