Forma rápida de saber si una aplicación instalada es de 64 bits o 32 bits

107

Tengo una aplicación de terceros (en este caso Cognos Data Manager) instalada en Windows Server 2003 de 64 bits.

¿Hay alguna forma rápida de determinar si una aplicación se ha compilado / compilado como una aplicación de 64 bits o como una aplicación de 32 bits?

Por defecto, un programa quería instalarse en Archivos de programa (x86). Supongo que eso significa que es una versión de 32 bits. Tenía que conseguir que hablara con una base de datos Oracle y para que funcionara, finalmente lo reinstalé en una ruta de directorio que no tenía los corchetes "(" y ")", ya que eso estaba causando un problema. También he instalado clientes Oracle de 64 bits y 32 bits.

Para referencia futura, me gustaría poder escribir un comando "xxxx fred.exe" y que me diga si fred.exe necesitaría una configuración de 32 bits o de 64 bits (por ejemplo, fuentes de datos ODBC, etc.).

Gary
fuente
1
Si una aplicación se encuentra en la carpeta Archivos de programa (x86), de ninguna manera se garantiza que la aplicación esté compilada a 64 bits. Es solo una convención que la mayoría de los instaladores siguen. Por ejemplo, Chrome 64 bit se instala en la carpeta x86 (lamentablemente).
nawfal

Respuestas:

92

Si ejecuta la aplicación, en el Administrador de tareas debería tener un * 32 al lado para indicar que es de 32 bits. Estoy bastante seguro de que lo implementaron en Server 2003, aunque no es positivo, espero que alguien pueda aclararlo.

También puede ejecutarlo a través de PEiD . PEiD no admite PE de 64 bits, por lo que se ahogará si es de 64 bits.

También está el famoso archivo GNU para Windows. Le informará todo tipo de información sobre un ejecutable.

Ejemplo:

$ 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>

Como puede ver, el instalador WinRAR de 64 bits se clasifica como PE32 +, que significa un ejecutable de 64 bits . La aplicación de 32 bits es simplemente PE32, un ejecutable de 32 bits.

John T
fuente
1
De nada :)
John T
1
Una alternativa al Administrador de tareas podría ser Process Explorer, puede agregar la columna Tipo de imagen allí. A través del menú Opciones, puede reemplazar el Administrador de tareas por esto si desea ... :-)
Tamara Wijsman
¿Qué muestra el archivo GNU con programas como Process Explorer, que tienen un código auxiliar de 32 bits que detecta que se está ejecutando en un sistema de 64 bits y desempaqueta una imagen de 64 bits para ejecutarla?
Afrazier
Descargarlo y probarlo por ti mismo?
John T
2
Para instalar filedesde GnuWin32, descargue 'paquete completo' (en lugar de 'binarios') desde gnuwin32.sourceforge.net/packages/file.htm
Coronel Panic
40

La forma más fácil, sin instalar otro programa o ejecutar el archivo, es simplemente hacer clic derecho en el archivo, elegir Propiedades y luego ir a la pestaña Compatibilidad . Si no hay opciones atenuadas y se ofrecen los modos Windows XP y 9x, es de 32 bits. Si hay opciones atenuadas y Vista es el primer modo ofrecido, es de 64 bits. No es necesario iniciar la aplicación en absoluto.

Si la aplicación ya se inició, por supuesto, aún puede usar la idea * 32 mencionada en otras respuestas. Sin embargo, esto no está disponible en Windows 8.xy su nuevo administrador de tareas. Afortunadamente, puede habilitar una columna de Plataforma haciendo clic derecho en los encabezados de columna en la pestaña Detalles y seleccionando Seleccionar columnas . La columna contendrá "32 bits" o "64 bits" según corresponda.

trlyly
fuente
Suena bastante razonable.
ArtOfWarfare
1
Sí, me gusta este. Quiero verificar si hay un solo archivo y no quería cargar mi computadora portátil llena de basura descargada ...
Gottlieb Notschnabel
El aviso * 32 no está disponible en el administrador de tareas de Windows 8 pero tiene una columna "Plataforma" que, de forma predeterminada, no está visible. Ver 7tutorials.com/…
Pino
Gracias @Pino. Nunca tuve ninguna razón para resolver eso mientras usaba Windows 8. (Regresé a Windows 7 cuando mi HD falló y me di cuenta de que nunca usé ninguna aplicación W8). Actualizaré mi respuesta.
Trly
25

Si tiene instalado Visual Studio o Platform SDK, puede usar dumpbin /headerspara ver los valores de encabezado PE.

Ejemplo para un ejecutable de 64 bits:

PE signature found

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
            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
                   Executable
                   Application can handle large (>2GB) addresses

OPTIONAL HEADER VALUES
             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
               ...

Y para 32 bits:

PE signature found

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
             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
                   Executable
                   32 bit word machine

OPTIONAL HEADER VALUES
             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
               ...

El primer valor en el encabezado del archivo le indica la arquitectura: 0x14C para x86 o 0x8664 para x64.

Joey
fuente
Enfoque interesante y detallado, realmente necesito comenzar a programar nuevamente, +1.
John T
18

Si tiene un programa de edición hexadecimal, simplemente abra su archivo con él y poco después de la introducción estándar del encabezado (como "Este programa no se puede ejecutar en modo DOS ...") verá

"PE..L" (código hexadecimal: 504500004C) = 32 bits

o

"PE..d †" (código hexadecimal: 504500006486) = 64 bit

Brian Weigand
fuente
Uso Total Commander como mi administrador de archivos, así que para mí, esta es la solución más simple. Solo puedo presionar F3 para ver el inicio del archivo y obtener la respuesta al instante.
mivk
1
Ew, en realidad escribieron "64" "86" como bytes legibles por humanos allí para indicar 64 bits. Qué feo :)
Nyerguds
@Nyerguds ¿por qué feo? se llama hexspeak y se usa con bastante frecuencia, especialmente. en números mágicos Por ejemplo, el IPv6 de Facebook es*:FACE:B00C:*
phuclv el
Eso no es lo mismo en absoluto. Solo estás hablando de hexadecimal. Literalmente, se usa el número 100 como "64" solo porque parece un 6 y un 4 en hexadecimal.
Nyerguds
@Nyerguds, la cadena "6486" está en hexadecimal, que obviamente es hexadecimal donde se leen dígitos hexadecimales como caracteres. ¿Qué tiene de malo 0xDEADBEEF cuando usas 0xD para D porque parece D? Si es feo, entonces BCD también es feo, donde literalmente usa el número 100 para significar 64
phuclv
5

texto alternativoEXE Explorer
Executable File Explorer para los tipos de archivo OS / 2, NE, PE32, PE32 + y VxD.

Esta aplicación se basa en el lector ejecutable portátil MiTeC . Lee y muestra las propiedades y la estructura del archivo ejecutable. Es compatible con los tipos de archivo PE32 (ejecutable portátil), PE32 + (64 bits), NE (nuevo ejecutable de Windows 3.x) y VxD (controlador de dispositivo virtual de Windows 9x). Los ejecutables .NET también son compatibles.

Enumera las clases introducidas, las unidades usadas y los formularios para los archivos compilados por los compiladores de Borland.

Nota: Viene con una GUI y le permite 'explorar' la estructura de archivos binarios de Windows.
Lamentablemente, ni siquiera parece aceptar un binario objetivo para abrir desde la línea de comandos. Pero el detalle que da puede ser útil en algunos casos.

nik
fuente
3

Puede verificar sigcheck.exequé es parte de Sysinternals Suite , p. Ej.

$ sigcheck.exe some_app.exe

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

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:   5.0.0.1241
    File version:   5.0.0.1241
    MachineType:    32-bit
kenorb
fuente
1
Eso también funciona para archivos DLL.
user34660
2

Otra forma simple es usar 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...
...

Un lugar para obtener PESnoop es aquí: http://www.prestosoft.com/download/plugins/PESnoop.zip

- Dave

ViperGeek
fuente
2

Dependency Walker es una herramienta GUI útil para verificar no solo archivos exe sino también archivos DLL. Un archivo DLL o EXE de 64 bits tendrá un pequeño ícono de 64 al lado.

bobc
fuente
1
filever /bad *.exe

WAMD64 o W32i o W16 estarán en la primera columna.

Mover
fuente
1

Si ejecuta el programa, puede usar "Process Monitor" (ProcMon) de Sysinternal Suite .

Es portátil y le brinda mucha información sobre sus procesos.

platillo
fuente
1
Eso es probablemente exagerado.
Synetech