Su Windows, come:
is64 abc.exe
1
e
is32 def.exe
1
Mentre abc.exe è compilato a 64 bit e def.exe è a 32 bit su Windows.
Su Windows, come:
is64 abc.exe
1
e
is32 def.exe
1
Mentre abc.exe è compilato a 64 bit e def.exe è a 32 bit su Windows.
Risposte:
Esiste uno strumento da riga di comando per controllare a 32-bit o 64-bit di un exe?
sì
c:\Program Files (x86)\GnuWin32\bin>file file.exe
file.exe; PE32 executable for MS Windows (console) Intel 80386 32-bit
c:\Program Files (x86)\GnuWin32\bin>cd ..\..\evernote\evernote
c:\Program Files (x86)\Evernote\Evernote>file evernote.exe
evernote.exe; PE32 executable for MS Windows (GUI) Intel 80386 32-bit
c:\Program Files (x86)\Evernote\Evernote>cd c:\Program Files\Internet Explorer
c:\Program Files\Internet Explorer>file iexplore.exe
iexplore.exe; PE32+ executable for MS Windows (GUI) Mono/.Net assembly
Il formato PE32 sta per Portable Executable 32-bit, mentre PE32 + è Portable Executable 64-bit.
Vedi http://gnuwin32.sourceforge.net/packages/file.htm
piace:
is64 abc.exe
1
Non esattamente così.
Puoi usare l' -b
opzione per escludere il nome del file dall'output, quindi hai solo bisogno di un po 'di kung fu da riga di comando per estrarre la prima parola (PE32 o PE32 +) per confrontarlo con PE32 + e usarlo nella tua dichiarazione "f".
Su Windows 10, se si dispone dell'aggiornamento dell'anniversario, se si abilita la shell bash , è possibile aprire una shell bash e utilizzare il file
comando in questo modo
rgb@MYPCNAME:/mnt/c$ file install.exe
install.exe: PE32 executable (GUI) Intel 80386, for MS Windows
o
rgb@MYPCNAME:/mnt/c/Program Files/Internet Explorer$ file ieinstal.exe
ieinstal.exe: PE32+ executable (GUI) x86-64, for MS Windows
Ho scritto un paio di programmi facendo esattamente quello che hai chiesto (Con l'aggiunta di messaggi di errore su errori eccetera.) (E in realtà, è un programma con una definizione che cambia il suo comportamento per essere perfettamente accurato, ma non importa .)
Puoi trovarli sul mio Dropbox, qui . Il codice sorgente è incluso nel pacchetto ma è possibile scartarlo se non è necessario. Fondamentalmente è incluso solo nel caso in cui non ti fidi dei miei binari.
Esempio di utilizzo :
>is32 C:\Windows\System32\taskmgr.exe
1
>is64 C:\Windows\System32\taskmgr.exe
0
Fondamentalmente, il programma funziona dapprima mappando la memoria del binario, quindi individuando l'intestazione PE e infine semplicemente confrontando il campo Macchina con il valore per qualsiasi architettura richiesta. Essenzialmente un processo molto semplice.
$ file access-client-win32.exe
access-client-win32.exe: PE32 executable for MS Windows (console) Intel 80386 32-bit
$ file access-client-win64.exe
access-client-win64.exe: PE32+ executable for MS Windows (console) Mono/.Net assembly
win32.exe -> PE32
win64.exe -> PE32+
ps: PE -> eseguibile portatile
>
prima di ogni riga di un preventivo di blocco e indentare i blocchi di codice con quattro spazi.