Modo rapido per sapere se un'applicazione installata è a 64 o 32 bit


107

Ho un'applicazione di terze parti (in questo caso Cognos Data Manager) installata su Windows Server 2003 a 64 bit.

Esiste un modo rapido per determinare se un'applicazione è stata compilata / compilata come applicazione a 64 bit o come applicazione a 32 bit?

Per impostazione predefinita, un programma voleva essere installato in Programmi (x86). Immagino che ciò significhi che è una versione a 32 bit. Ho dovuto convincerlo a parlare con un database Oracle e per farlo funzionare alla fine l'ho reinstallato in un percorso di directory che non conteneva parentesi "(" e ")", poiché ciò stava causando un problema. Ho anche installato client Oracle a 64 e 32 bit.

Per riferimento futuro, vorrei essere in grado di digitare un comando "xxxx fred.exe" e dirmi se fred.exe avrebbe bisogno di un'installazione a 32 o 64 bit (ad esempio origini dati ODBC ecc.).


1
Se un'app si trova nella cartella Progam Files (x86), non garantisce che l'app sia compilata a 64 bit. È solo una convenzione seguita dalla maggior parte degli installatori. Ad esempio Chrome 64 bit viene installato nella cartella x86 (purtroppo).
nawfal,

Risposte:


92

Se esegui l'applicazione, in Task Manager dovrebbe avere un * 32 accanto per indicare che è a 32 bit. Sono abbastanza sicuro che lo abbiano implementato in Server 2003, anche se non positivo, spero che qualcuno possa chiarire.

Potresti anche eseguirlo attraverso PEiD . PEiD non supporta PE a 64 bit, quindi si bloccherà se è a 64 bit.

C'è anche il famoso file GNU per Windows. Ti dirà ogni sorta di informazione su un eseguibile.

Esempio:

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

Come puoi vedere, il programma di installazione WinRAR a 64 bit è classificato come PE32 +, il che significa un eseguibile a 64 bit . L'applicazione a 32 bit è semplicemente PE32, un eseguibile a 32 bit.


1
Prego :)
John T,

1
Un'alternativa a Task Manager potrebbe essere Process Explorer, è possibile aggiungere la colonna Tipo di immagine lì. Tramite il menu Opzioni puoi sostituire Task Manager con questo se vuoi ... :-)
Tamara Wijsman

Cosa mostra il file GNU con programmi come Process Explorer, che hanno uno stub a 32 bit che rileva che è in esecuzione su un sistema a 64 bit e decomprime un'immagine a 64 bit da eseguire?
Afrazier,

Scaricalo e provalo tu stesso?
John T

2
Per installare fileda GnuWin32, scarica "pacchetto completo" (anziché "binari") da gnuwin32.sourceforge.net/packages/file.htm
Colonnello Panic,

40

Il modo più semplice, senza installare un altro programma o eseguire il file, è semplicemente fare clic con il pulsante destro del mouse sul file, scegliere Proprietà , quindi la scheda Compatibilità . Se non ci sono opzioni in grigio e sono disponibili le modalità Windows XP e 9x, è a 32 bit. Se ci sono opzioni in grigio e Vista è la prima modalità offerta, è a 64 bit. Non è necessario avviare l'applicazione.

Se l'applicazione è già stata avviata, puoi ovviamente utilizzare ancora l'idea * 32 menzionata in altre risposte. Tuttavia, questo non è disponibile in Windows 8.xe nel suo nuovo task manager. Fortunatamente, puoi abilitare una colonna della piattaforma facendo clic con il tasto destro del mouse sulle intestazioni delle colonne nella scheda Dettagli e selezionando Seleziona colonne . La colonna conterrà "32 bit" o "64 bit", a seconda dei casi.


Sembra abbastanza ragionevole.
ArtOfWarfare il

1
Sì, mi piace questo. Voglio controllarlo per un singolo file e non voglio caricare il mio laptop pieno di schifezze scaricate ...
Gottlieb Notschnabel

L'avviso * 32 non è disponibile nel Task Manager di Windows 8 ma ha una colonna "Piattaforma" che, per impostazione predefinita, non è visibile. Vedi 7tutorials.com/…
Pino

Grazie @Pino. Non ho mai avuto motivo di capirlo mentre usavo Windows 8. (Sono tornato a Windows 7 quando il mio HD si è bloccato e mi sono reso conto che non ho mai usato alcuna app W8.) Aggiornerò la mia risposta.
sinceramente

25

Se hai installato Visual Studio o Platform SDK, puoi utilizzare dumpbin /headersi valori dell'intestazione PE.

Esempio per un eseguibile a 64 bit:

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

E per 32 bit:

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

Il primo valore nell'intestazione del file indica l'architettura: 0x14C per x86 o 0x8664 per x64.


Approccio interessante e dettagliato, ho davvero bisogno di ricominciare a programmare, +1.
John T,

18

Se hai un programma di editor esadecimale, apri semplicemente il tuo file con esso e poco dopo l'intestazione standard dell'intro (come "Questo programma non può essere eseguito in modalità DOS ...") vedrai

"PE..L" (codice esadecimale: 504500004C) = 32 bit

o

"PE..d †" (codice esadecimale: 504500006486) = 64 bit


Uso Total Commander come file manager, quindi per me questa è la soluzione più semplice. Posso semplicemente premere F3 per visualizzare l'inizio del file e avere immediatamente la risposta.
marzo

1
Ew, in realtà hanno scritto "64" "86" come byte leggibili dall'uomo per indicare 64 bit. Che brutto :)
Nyerguds,

@Nyerguds perché brutto? si chiama hexspeak ed è abbastanza comunemente usato, esp. in numeri magici. Ad esempio, l'IPv6 di Facebook è*:FACE:B00C:*
phuclv,

Non è affatto lo stesso. Stai solo parlando di esadecimali. Questo sta letteralmente usando il numero 100 come "64" solo perché sembra un 6 e un 4 in esadecimale.
Nyerguds,

@Nyerguds la stringa "6486" è in esadecimale, che ovviamente è esadecimale in cui leggi cifre esadecimali come caratteri. Cosa c'è che non va in 0xDEADBEEF quando usi 0xD per D perché sembra D? Se è brutto, BCD è anche brutto in cui usi letteralmente il numero 100 per indicare 64
phuclv

5

testo alternativoEXE Explorer
File eseguibile Explorer per tipi di file OS / 2, NE, PE32, PE32 + e VxD.

Questa applicazione si basa sul lettore eseguibile portatile MiTeC . Legge e visualizza le proprietà e la struttura del file eseguibile. È compatibile con i tipi di file PE32 (Portable Executable), PE32 + (64bit), NE (Windows 3.x New Executable) e VxD (Windows 9x Virtual Device Driver). Anche gli eseguibili .NET sono supportati.

Enumera le classi introdotte, le unità utilizzate e i moduli per i file compilati dai compilatori Borland.

Nota: viene fornito con una GUI e consente di "esplorare" la struttura dei file binari di Windows.
Purtroppo, non sembra nemmeno accettare un binario di destinazione da aprire dalla riga di comando. Ma il dettaglio che fornisce potrebbe essere utile in alcuni casi.


3

È possibile verificare utilizzando sigcheck.exequale parte della Suite Sysinternals , ad es

$ 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

1
Funziona anche con le DLL.
user34660

2

Un altro modo semplice è usare 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 posto per ottenere PESnoop è qui: http://www.prestosoft.com/download/plugins/PESnoop.zip

- Dave



2

Dependency Walker è un utile strumento GUI per verificare non solo i file exe ma anche i file DLL. Un file DLL o EXE a 64 bit avrà una piccola icona 64 accanto ad esso.


1
filever /bad *.exe

WAMD64 o W32i o W16 saranno nella prima colonna.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.