Compartir a través de


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