Gibt es ein Befehlszeilentool zum Überprüfen von 32-Bit oder 64-Bit eines Exes?

10713
kissson

Unter Windows wie:

is64 abc.exe  1  

und

is32 def.exe  1  

Während abc.exe 64-Bit kompiliert wird, ist def.exe unter Windows 32-Bit.

5
http://support.microsoft.com/kb/556009 Ishikawa Yoshi vor 12 Jahren 0
Nicht das ich kenne, aber das Erstellen eines Dienstprogramms, das den PE-Header einer Binärdatei liest, sollte nicht übermäßig schwierig sein. Wenn ich jetzt das PE-Format studiere, werde ich antworten, wenn ich es herausfinde. vor 12 Jahren 0
»Kay, hat es herausgefunden und hat mit einem Paket Befehlszeilen-Tools geantwortet, die das tun, was Sie gefragt haben. Meiner Ansicht nach. vor 12 Jahren 0

3 Antworten auf die Frage

6
RedGrittyBrick

Gibt es ein Befehlszeilentool zum Überprüfen von 32-Bit oder 64-Bit eines Exes?

Ja

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 

Das PE32-Format steht für Portable Executable 32-Bit, während PE32 + das Portable Executable 64-Bit-Format ist.

Siehe http://gnuwin32.sourceforge.net/packages/file.htm

mögen:

is64 abc.exe
1

Nicht genau so.

Sie können die -bOption verwenden, um den Dateinamen von der Ausgabe auszuschließen. Dann benötigen Sie etwas Befehlszeilen-Kung-Fu, um das erste Wort (PE32 oder PE32 +) zu extrahieren, vergleichen Sie es mit PE32 + und verwenden Sie das in Ihrer ìf`-Anweisung.


Windows 10

Wenn Sie unter Windows 10 über das Jubiläums-Update verfügen, können Sie, wenn Sie die Bash-Shell aktivieren, eine Bash-Shell öffnen und den fileBefehl so verwenden

rgb@MYPCNAME:/mnt/c$ file install.exe install.exe: PE32 executable (GUI) Intel 80386, for MS Windows 

oder

rgb@MYPCNAME:/mnt/c/Program Files/Internet Explorer$ file ieinstal.exe ieinstal.exe: PE32+ executable (GUI) x86-64, for MS Windows 
4

Ich habe ein Programmpaar geschrieben, das genau das tat, wonach Sie gefragt haben (mit Hinzufügung von Fehlermeldungen zu Fehlern usw.) (Und eigentlich ist es ein Programm mit einem Define, das sein Verhalten so ändert, dass es vollkommen genau ist, aber das spielt keine Rolle .)

Sie finden sie auf meiner Dropbox hier . Der Quellcode ist im Paket enthalten, aber Sie können ihn löschen, wenn er nicht benötigt wird. Es ist im Grunde nur enthalten, wenn Sie meinen Binärdateien nicht trauen.

Anwendungsbeispiel :

>is32 C:\Windows\System32\taskmgr.exe 1  >is64 C:\Windows\System32\taskmgr.exe 0 

Grundsätzlich arbeitet das Programm, indem es zuerst die binäre Datei speichert, dann den PE-Header findet und schließlich einfach das Feld Machine mit dem Wert für die gewünschte Architektur vergleicht. Im Wesentlichen ein sehr einfacher Prozess.

Während Datei wahrscheinlich die bessere Lösung ist, liegt das +1 daran, dass diese Art von Hilfe belohnt werden sollte. Ben vor 10 Jahren 1
1
York Tsai
$ 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 -> Portable Executable

Denken Sie daran, Ihre Antwort richtig zu formatieren. Verwenden Sie vor jeder Zeile eines Block-Anführungszeichens eine spitze Klammer `>`, und ziehen Sie Codeblöcke mit vier Leerzeichen ein. bwDraco vor 9 Jahren 0