Schnelle Möglichkeit festzustellen, ob eine installierte Anwendung 64-Bit oder 32-Bit ist


107

Ich habe eine Drittanbieteranwendung (in diesem Fall Cognos Data Manager) auf 64-Bit-Windows Server 2003 installiert.

Gibt es eine schnelle Möglichkeit, festzustellen, ob eine Anwendung als 64-Bit-Anwendung oder als 32-Bit-Anwendung erstellt / kompiliert wurde?

Standardmäßig sollte ein Programm in Program Files (x86) installiert werden. Ich vermute, das bedeutet, dass es sich um eine 32-Bit-Version handelt. Ich musste es dazu bringen, mit einer Oracle-Datenbank zu kommunizieren, und um dies zum Laufen zu bringen, installierte ich es schließlich in einem Verzeichnispfad neu, der keine Klammern "(" und ")" enthielt, da dies ein Problem verursachte. Ich habe auch 64-Bit- und 32-Bit-Oracle-Clients installiert.

Zum späteren Nachschlagen möchte ich einen Befehl "xxxx fred.exe" eingeben und mir mitteilen lassen, ob für fred.exe ein 32-Bit- oder ein 64-Bit-Setup erforderlich ist (z. B. ODBC-Datenquellen usw.).


1
Wenn sich eine App im Ordner Progam Files (x86) befindet, stellt dies keinesfalls sicher, dass die App mit 64 Bit kompiliert ist. Es ist nur eine Konvention, der die meisten Installateure folgen. Zum Beispiel wird Chrome 64 Bit im x86 Ordner installiert (leider).
Nawfal

Antworten:


92

Wenn Sie die Anwendung ausführen, sollte im Task-Manager ein * 32 daneben stehen, um anzuzeigen, dass es sich um eine 32-Bit-Anwendung handelt. Ich bin mir ziemlich sicher, dass sie dies in Server 2003 implementiert hatten, aber nicht positiv, hoffentlich kann jemand das klären.

Sie können es auch über PEiD ausführen . PEiD unterstützt keine 64-Bit-PEs, sodass es erstickt, wenn es 64-Bit ist.

Es gibt auch die berühmte GNU-Datei für Windows. Es werden alle möglichen Informationen zu einer ausführbaren Datei angezeigt.

Beispiel:

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

Wie Sie sehen können, ist das 64-Bit-WinRAR-Installationsprogramm als PE32 + klassifiziert, was auf eine ausführbare 64-Bit-Datei hinweist . Die 32-Bit-Anwendung ist einfach PE32, eine ausführbare 32-Bit-Datei.


1
Gern geschehen :)
John T

1
Eine Alternative zum Task-Manager könnte der Prozess-Explorer sein. Dort können Sie die Spalte Bildtyp hinzufügen. Über das Optionsmenü können Sie den Task-Manager durch diesen ersetzen, wenn Sie möchten ... :-)
Tamara Wijsman

Was zeigt die GNU-Datei mit Programmen wie Process Explorer, die einen 32-Bit-Stub haben, der erkennt, dass sie auf einem 64-Bit-System ausgeführt werden, und ein 64-Bit-Image zur Ausführung entpackt?
Afrazier

Laden Sie es herunter und versuchen Sie es selbst?
John T

2
Um filevon GnuWin32 zu installieren , laden Sie 'vollständiges Paket' (anstatt 'Binärdateien') von gnuwin32.sourceforge.net/packages/file.htm
Colonel Panic,

40

Der einfachste Weg, ohne ein anderes Programm zu installieren oder die Datei auszuführen, besteht darin, mit der rechten Maustaste auf die Datei zu klicken, Eigenschaften auszuwählen und dann auf die Registerkarte Kompatibilität zuzugreifen. Wenn keine ausgeblendeten Optionen vorhanden sind und die Modi Windows XP und 9x angeboten werden, ist dies 32-Bit. Wenn die Optionen ausgegraut sind und Vista als frühester Modus angeboten wird, ist dies 64-Bit. Die Anwendung muss überhaupt nicht gestartet werden.

Wenn die Anwendung bereits gestartet ist, können Sie natürlich auch die in anderen Antworten erwähnte * 32-Idee verwenden. Dies ist jedoch in Windows 8.x und seinem neuen Task-Manager nicht verfügbar. Glücklicherweise können Sie eine Platform- Spalte aktivieren, indem Sie mit der rechten Maustaste auf die Spaltenüberschriften auf der Registerkarte Details klicken und Spalten auswählen auswählen . Die Spalte enthält entweder "32-Bit" oder "64-Bit".


Hört sich vernünftig an.
ArtOfWarfare

1
Ja, ich mag diesen. Ich wollte es auf eine einzelne Datei überprüfen und wollte meinen Laptop nicht voll mit heruntergeladenem Mist laden ...
Gottlieb Notschnabel

Der Hinweis * 32 ist im Task-Manager von Windows 8 nicht verfügbar, enthält jedoch eine Spalte "Plattform", die standardmäßig nicht angezeigt wird. Siehe 7tutorials.com/…
Pino

Vielen Dank @Pino. Ich hatte nie einen Grund, das herauszufinden, während ich Windows 8 verwendete. (Als meine Festplatte abstürzte und ich merkte, dass ich keine W8-Apps verwendete, kehrte ich zu Windows 7 zurück.) Ich aktualisiere meine Antwort.
trlkly

25

Wenn Sie Visual Studio oder das Platform SDK installiert haben, können Sie dumpbin /headersdie PE-Headerwerte anzeigen.

Beispiel für eine ausführbare 64-Bit-Datei:

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

Und für 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
               ...

Der erste Wert im Dateiheader gibt Auskunft über die Architektur: entweder 0x14C für x86 oder 0x8664 für x64.


Interessanter und detaillierter Ansatz, ich muss wirklich wieder anfangen zu programmieren, +1.
John T

18

Wenn Sie ein Hex-Editor-Programm haben, öffnen Sie einfach Ihre Datei damit und kurz nach dem Standard-Header-Intro-Zeug (wie "Dieses Programm kann nicht im DOS-Modus ausgeführt werden ...") werden Sie auch sehen

"PE..L" (Hex-Code: 504500004C) = 32 Bit

oder

"PE..d †" (Hex-Code: 504500006486) = 64 Bit


Ich verwende Total Commander als Dateimanager. Für mich ist dies die einfachste Lösung. Ich kann einfach F3 drücken, um den Anfang der Datei anzuzeigen und die Antwort sofort zu erhalten.
Mittwoch,

1
Ew, sie haben tatsächlich "64" "86" als lesbare Bytes geschrieben, um 64 Bit anzuzeigen. Wie hässlich :)
Nyerguds

@Nyerguds warum hässlich? es heißt hexspeak und wird ziemlich häufig verwendet, insb. in magischen Zahlen. Zum Beispiel ist das IPv6 von Facebook*:FACE:B00C:*
phuclv

Das ist überhaupt nicht dasselbe. Du sprichst nur von Hex Leetspeak. Dies bedeutet wörtlich, dass die Zahl 100 "64" bedeutet, nur weil sie hexadezimal wie eine 6 und eine 4 aussieht.
Nyerguds

@Nyerguds Die Zeichenfolge "6486" ist hexadezimal. Dies ist offensichtlich hexspeak, in dem Sie Hexadezimalziffern als Zeichen lesen. Was ist mit 0xDEADBEEF falsch, wenn Sie 0xD für D verwenden, weil es wie D aussieht? Wenn es hässlich ist, dann ist BCD auch hässlich, wo Sie buchstäblich die Zahl 100 verwenden, um 64 zu bedeuten
phuclv

5

Alt-TextEXE Explorer
Ausführbarer Datei-Explorer für die Dateitypen OS / 2, NE, PE32, PE32 + und VxD.

Diese Anwendung basiert auf MiTeC Portable Executable Reader . Es liest und zeigt die Eigenschaften und die Struktur der ausführbaren Dateien an. Es ist kompatibel mit den Dateitypen PE32 (Portable Executable), PE32 + (64 Bit), NE (Windows 3.x New Executable) und VxD (Windows 9x Virtual Device Driver). Auch ausführbare .NET-Dateien werden unterstützt.

Es werden die eingeführten Klassen, verwendeten Einheiten und Formulare für Dateien aufgelistet, die von Borland-Compilern kompiliert wurden.

Hinweis: Es wird mit einer grafischen Benutzeroberfläche geliefert, mit der Sie die Windows-Binärdateistruktur erkunden können.
Leider scheint es nicht einmal eine Ziel-Binärdatei zu akzeptieren, die über die Befehlszeile geöffnet werden kann. Aber das Detail, das es liefert, kann in manchen Fällen nützlich sein.


3

Sie können überprüfen, sigcheck.exewelcher Bestandteil der Sysinternals Suite ist , z

$ 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
Das funktioniert auch bei DLLs.
user34660

2

Eine andere einfache Möglichkeit ist die Verwendung von 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...
...

Ein Ort, um PESnoop zu erhalten, ist hier: http://www.prestosoft.com/download/plugins/PESnoop.zip

- Dave



2

Dependency Walker ist ein nützliches GUI-Tool, um nicht nur EXE-Dateien, sondern auch DLL-Dateien zu überprüfen. Neben einer 64-Bit-DLL- oder EXE-Datei befindet sich ein kleines 64-Bit-Symbol.


1
filever /bad *.exe

WAMD64 oder W32i oder W16 stehen in der ersten Spalte.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.