Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I've got a third-party application (in this case Cognos Data Manager) installed on 64-bit Windows Server 2003.

Is there a quick way to determine if an application has been built/compiled as a 64-bit application or as a 32-bit application?

By default a program wanted to be installed in Program Files (x86). I'm guessing that means that it is a 32-bit version. I had to get it to talk to an Oracle database and to get that working I eventually reinstalled it in a directory path which didn't have brackets "(" and ")" in it, as that was causing a problem. I've also installed both 64-bit and 32-bit Oracle clients.

For future reference, I'd like to be able to type a command "xxxx fred.exe" and have it tell me whether fred.exe would be needing 32-bit or 64-bit setup (eg ODBC data sources etc).

share|improve this question
If an app lies in Progam Files (x86) folder it by no means ensures the app is 64 bit compiled. It's just a convention most installers follow. For e.g. Chrome 64 bit gets installed to x86 folder (sadly). – nawfal Jun 29 at 7:18

11 Answers 11

up vote 77 down vote accepted

If you run the application, in Task Manager it should have a *32 beside it to indicate it's 32-bit. I'm pretty sure they had this implemented in Server 2003, not positive though, hopefully someone can clarify.

You could also run it through PEiD. PEiD does not support 64-bit PEs, so it will choke if it's 64-bit.

There is also the famous GNU file for Windows. It will tell you all sorts of information about an executable.


$ file winrar-x64-392b1.exe
winrar-x64-392b1.exe: PE32+ executable for MS Windows (GUI)

$ file display.exe
display.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit</pre>

As you can see, the 64-bit WinRAR installer is classified as PE32+, which signifies a 64-bit executable. The 32-bit application is simply PE32, a 32-bit executable.

share|improve this answer
Grabbed GnuFile and it worked great. Thanks. – Gary Feb 1 '10 at 2:01
You're very welcome :) – John T Feb 1 '10 at 2:03
An alternative to Task Manager could be Process Explorer, you can add the Image Type column there. Through the Options menu you can replace Task Manager by this if you want to... :-) – Tom Wijsman Sep 3 '10 at 15:07
What does GNU file show with programs like Process Explorer, which have a 32-bit stub that detects it's running on a 64-bit system and unpacks a 64-bit image to execute? – afrazier Sep 4 '10 at 12:43
To install file from GnuWin32, download 'complete package' (rather than 'binaries') from – Colonel Panic Jan 2 '13 at 16:28

The easiest way, without installing another program or running the file, is just to right click on the file, choose Properties, and then go the the Compatibility tab. If there are no greyed out options and Windows XP and 9x modes are offered, it's 32-bit. If there are greyed out options and Vista is the earliest mode offered, it's 64-bit. No need to start the application at all.

If the application is already started, you can of course still use the *32 idea mentioned in other answers. However, this is not available in Windows 8.x and its new task manager. Fortunately, you can enable a Platform column by right-clicking on the column headers in the Details tab and choosing Select columns. The column will contain either "32-bit" or "64-bit" as appropriate.

share|improve this answer
Sounds reasonable enough. – ArtOfWarfare Aug 30 '13 at 12:39
Yeah I like this one. I want to check it for one single file and didn't want to load my laptop full of downloaded crap... – Gottlieb Notschnabel Feb 13 '14 at 10:11
The *32 notice is not available in the task manager of Windows 8 but it has a "Platform" column which, by default, is not visible. See… – Pino May 8 '15 at 14:50
Thanks @Pino. I never had any reason to figure that out while I used Windows 8. (I went back to Windows 7 when my HD crashed and I realized I never used any W8 apps.) I'll update my answer. – trlkly May 9 '15 at 20:05

If you got Visual Studio or the Platform SDK installed you can use dumpbin /headers to look at the PE header values.

Example for a 64-bit executable:

PE signature found


            8664 machine (x64)
               5 number of sections
        4987EDCA time date stamp Tue Feb 03 08:10:02 2009
               0 file pointer to symbol table
               0 number of symbols
              F0 size of optional header
              23 characteristics
                   Relocations stripped
                   Application can handle large (>2GB) addresses

             20B magic # (PE32+)
            8.00 linker version
           2A600 size of code
           18A00 size of initialized data
               0 size of uninitialized data
           2AE90 entry point (000000000042AE90)
            1000 base of code

And for 32 bit:

PE signature found


             14C machine (x86)
               3 number of sections
        4B0C786D time date stamp Wed Nov 25 01:21:01 2009
               0 file pointer to symbol table
               0 number of symbols
              E0 size of optional header
             103 characteristics
                   Relocations stripped
                   32 bit word machine

             10B magic # (PE32)
            9.00 linker version
           42000 size of code
            4000 size of initialized data
           6F000 size of uninitialized data
           B0EE0 entry point (004B0EE0)
           70000 base of code

The first value in the file header tells you the architecture: either 0x14C for x86 or 0x8664 for x64.

share|improve this answer
Interesting and detailed approach, I really need to start programming again, +1. – John T Jan 31 '10 at 22:21

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


"PE..d†" (hex code: 504500006486) = 64 bit

share|improve this answer
I use Total Commander as my file manager, so for me, this is an the simplest solution. I can just press F3 to view the start of the file and have the answer instantly. – mivk Jun 13 '12 at 20:04
Ew, they actually wrote "64" "86" as human-readable bytes in there to indicate 64 bit. How ugly :) – Nyerguds Apr 28 '14 at 6:27

alt textEXE Explorer
Executable File Explorer for OS/2, NE, PE32, PE32+ and VxD file types.

This application is based on MiTeC Portable Executable Reader. It reads and displays executable file properties and structure. It is compatible with PE32 (Portable Executable), PE32+ (64bit), NE (Windows 3.x New Executable) and VxD (Windows 9x Virtual Device Driver) file types. .NET executables are supported too.

It enumerates introduced classes, used units and forms for files compiled by Borland compilers.

Note: It comes with a GUI and lets you 'explore' the Windows binary file structure.
Sadly, it does not seem to even accept a target binary to open from the command line. But the detail it gives might be useful in some cases.

share|improve this answer

Another simple way is to use PESnoop:

C:\> pesnoop photoshop.exe /pe_dh

 PESnoop 2.0 - Advanced PE32/PE32+/COFF OBJ,LIB command line dumper by yoda

Dump of file: photoshop.exe...
Modus:        64bit Portable Executable Image...

One place to get PESnoop is here:

-- Dave

share|improve this answer

And for you GUI enthusiasts, the absolute easiest way is to install this Explorer extension:

-- Dave

share|improve this answer
"Installation Failed". Yay. – ArtOfWarfare Aug 30 '13 at 12:35

Dependency Walker is a useful GUI tool to verify not only exe files but also DLL files. A 64 bit DLL or EXE file will have a little 64 icon next to it.

share|improve this answer
filever /bad *.exe

WAMD64 or W32i or W16 will be in the first column.

share|improve this answer

If you run the program, you can use "Process Monitor" (ProcMon) from Sysinternal Suite.

Its portable and gives you a lot of info about your processes.

share|improve this answer
That’s probably overkill. – Synetech May 31 '14 at 17:35

You can check using sigcheck.exe which is part of Sysinternals Suite, e.g.

$ sigcheck.exe some_app.exe

Sigcheck v2.51 - File version and signature viewer
Copyright (C) 2004-2016 Mark Russinovich
Sysinternals -

C:/Program Files (x86)/Foo App\some_app.exe:
    Verified:   Signed
    Signing date:   14:48 23/12/2015
    Publisher:  X
    Company:    X
    Description:    X
    Product:    Some App
    Prod version:
    File version:
    MachineType:    32-bit
share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .