Moyen rapide de savoir si une application installée est en 64 bits ou en 32 bits


107

J'ai une application tierce (dans ce cas, Cognos Data Manager) installée sur Windows Server 2003 64 bits.

Existe-t-il un moyen rapide de déterminer si une application a été créée / compilée en tant qu'application 64 bits ou en tant qu'application 32 bits?

Par défaut, un programme voulait être installé dans Program Files (x86). Je suppose que cela signifie que c'est une version 32 bits. Je devais le faire pour parler à une base de données Oracle et pour que cela fonctionne, je l'ai finalement réinstallé dans un chemin de répertoire ne comportant pas de crochets "(" et ")", car cela posait problème. J'ai également installé des clients Oracle 64 bits et 32 ​​bits.

Pour référence ultérieure, j'aimerais pouvoir taper une commande "xxxx fred.exe" et lui demander de me dire si fred.exe nécessiterait une configuration 32 bits ou 64 bits (par exemple, des sources de données ODBC, etc.).


1
Si une application se trouve dans le dossier Progam Files (x86), elle ne garantit en aucun cas qu’elle est compilée en 64 bits. C'est juste une convention que la plupart des installateurs suivent. Par exemple, Chrome 64 bits est installé dans le dossier x86 (malheureusement).
Nawfal

Réponses:


92

Si vous exécutez l'application, dans le Gestionnaire des tâches, un * 32 devrait l'indiquer pour indiquer qu'il est en 32 bits. Je suis à peu près sûr qu'ils ont implémenté cette fonctionnalité dans Server 2003, ce qui n'est pas positif, espérons que quelqu'un puisse clarifier les choses.

Vous pouvez également l'exécuter via PEiD . Le PEiD ne supporte pas les PE 64 bits, donc il va s'étouffer s'il s'agit d'un 64 bits.

Il y a aussi le fameux fichier GNU pour Windows. Il vous dira toutes sortes d'informations sur un exécutable.

Exemple:

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

Comme vous pouvez le constater, le programme d’installation WinRAR 64 bits est classé PE32 +, ce qui signifie un exécutable 64 bits . L'application 32 bits est simplement PE32, un exécutable 32 bits.


1
Vous êtes les bienvenus :)
John T

1
L'explorateur de processus est une alternative au Gestionnaire des tâches. Vous pouvez y ajouter la colonne Type d'image. Dans le menu Options, vous pouvez remplacer le Gestionnaire des tâches par ceci si vous souhaitez ... :-)
Tamara Wijsman le

Que montrent les fichiers GNU avec des programmes tels que Process Explorer, dont le stub 32 bits détecte son exécution sur un système 64 bits et décompresse une image 64 bits à exécuter?
Afrazier le

Téléchargez-le et essayez par vous-même?
John T

2
Pour installer à filepartir de GnuWin32, téléchargez «package complet» (plutôt que «fichiers binaires») à partir de gnuwin32.sourceforge.net/packages/file.htm
Colonel Panic, le

41

Le moyen le plus simple, sans installer un autre programme ni exécuter le fichier, consiste à cliquer avec le bouton droit de la souris sur le fichier, choisissez Propriétés , puis allez dans l' onglet Compatibilité . S'il n'y a pas d'options grisées et que les modes Windows XP et 9x sont proposés, c'est 32 bits. S'il existe des options grisées et que Vista est le premier mode proposé, il s'agit du 64 bits. Pas besoin de démarrer l'application du tout.

Si l'application est déjà lancée, vous pouvez bien sûr continuer à utiliser l'idée * 32 mentionnée dans d'autres réponses. Toutefois, cela n’est pas disponible dans Windows 8.x et son nouveau gestionnaire de tâches. Heureusement, vous pouvez activer une colonne de la plate - forme en cliquant avec le bouton droit de la souris sur les en-têtes de colonne dans l' onglet Détails et en choisissant Sélectionner les colonnes . La colonne contiendra "32 bits" ou "64 bits" selon le cas.


Cela semble assez raisonnable.
ArtOfWarfare

1
Oui j'aime celui-ci. Je veux le vérifier pour un seul fichier et je ne voulais pas charger mon ordinateur portable plein de merde téléchargée ...
Gottlieb Notschnabel

L'avis * 32 n'est pas disponible dans le gestionnaire de tâches de Windows 8, mais il contient une colonne "Plate-forme" qui, par défaut, n'est pas visible. Voir 7tutorials.com/…
Pino

Merci @Pino. Je n'avais aucune raison de le savoir lorsque j'utilisais Windows 8. (Je suis retourné sous Windows 7 lorsque mon disque dur est tombé en panne et je me suis rendu compte que je n'utilisais jamais aucune application W8.) Je mettrai à jour ma réponse.
Trlkly

25

Si Visual Studio ou le Kit de développement Platform SDK est installé, vous pouvez utiliser dumpbin /headersles valeurs d'en-tête PE.

Exemple pour un exécutable 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
               ...

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

La première valeur dans l'en-tête du fichier vous indique l'architecture: 0x14C pour x86 ou 0x8664 pour x64.


Approche intéressante et détaillée, je dois vraiment recommencer la programmation, +1.
John T

18

Si vous avez un programme d'édition hexadécimal, ouvrez simplement votre fichier avec celui-ci et peu de temps après l'intro standard en-tête (comme "Ce programme ne peut pas être exécuté en mode DOS ..."), vous verrez soit

"PE..L" (code hex: 504500004C) = 32 bits

ou

"PE..d †" (code hex: 504500006486) = 64 bits


J'utilise Total Commander en tant que gestionnaire de fichiers. C'est donc pour moi la solution la plus simple. Je peux simplement appuyer sur F3 pour voir le début du fichier et avoir la réponse instantanément.
mardi

1
Ew, ils ont en fait écrit "64" "86" sous forme d'octets lisibles par l'homme pour indiquer 64 bits. Quelle moche :)
Nyerguds

@ Nyerguds pourquoi moche? c'est ce qu'on appelle hexspeak et est assez couramment utilisé, esp. en nombres magiques. Par exemple, l'IPv6 de facebook est*:FACE:B00C:*
phuclv

Ce n'est pas la même chose du tout. Vous parlez seulement de hex leetspeak. Ceci utilise littéralement le nombre 100 comme "64" simplement parce qu'il ressemble à un 6 et un 4 en hexadécimal.
Nyerguds

@Nyerguds la chaîne "6486" est en hex, ce qui est évidemment hexspeak où vous lisez les chiffres hexadécimaux en tant que caractères. Quel est le problème avec 0xDEADBEEF lorsque vous utilisez 0xD pour D parce qu'il ressemble à D? Si c'est moche, alors BCD est aussi moche, où vous utilisez littéralement le nombre 100 pour signifier 64
phuclv

5

texte alternatifEXE Explorer Explorateur de
fichiers exécutables pour les types de fichiers OS / 2, NE, PE32, PE32 + et VxD.

Cette application est basée sur le lecteur exécutable portable MiTeC . Il lit et affiche les propriétés et la structure du fichier exécutable. Il est compatible avec les types de fichiers PE32 (Portable Executable), PE32 + (64 bits), NE (Windows 3.x Nouvel Exécutable) et VxD (Windows 9x Virtual Device Driver). Les exécutables .NET sont également supportés.

Il énumère les classes introduites, les unités utilisées et les formulaires pour les fichiers compilés par les compilateurs Borland.

Remarque: Il est livré avec une interface graphique et vous permet «d'explorer» la structure de fichier binaire Windows.
Malheureusement, il ne semble même pas accepter qu'un fichier binaire cible s'ouvre à partir de la ligne de commande. Mais les détails fournis peuvent être utiles dans certains cas.


3

Vous pouvez vérifier en utilisant sigcheck.exece qui fait partie de Sysinternals Suite , par exemple

$ 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
Cela fonctionne également pour les DLL.
user34660

2

Un autre moyen simple consiste à utiliser 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 endroit pour obtenir PESnoop est ici: http://www.prestosoft.com/download/plugins/PESnoop.zip

- Dave



2

Dependency Walker est un outil graphique utile pour vérifier non seulement les fichiers exe, mais également les fichiers DLL. Une DLL 64 bits ou un fichier EXE aura une petite icône 64 à côté.


1
filever /bad *.exe

WAMD64 ou W32i ou W16 seront dans la première colonne.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.