web-dev-qa-db-fra.com

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

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é généré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, ODBC sources de données, etc.).

107
Gary

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 célèbre GNU fichier } 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.

92
John T

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 accédez à l'onglet Compatibilité . S'il n'y a pas d'options grisées et que les modes Windows XP et 9x sont proposés, il s'agit du 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 Platform 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 des colonnes . La colonne contiendra "32 bits" ou "64 bits" selon le cas.

40
trlkly

Si Visual Studio ou le Kit de développement Platform SDK est installé, vous pouvez utiliser dumpbin /headers pour consulter les 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.

25
Joey

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

18
Brian Weigand

alt textEXE Explorer
Explorateur de fichiers exécutable pour les types de fichiers OS/2, NE, PE32, PE32 + et VxD.

Cette application est basée sur MiTeC Portable Executable Reader . 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 l’ouverture d’un fichier binaire cible à partir de la ligne de commande. Mais les détails fournis peuvent être utiles dans certains cas.

5
nik

Vous pouvez vérifier en utilisant sigcheck.exe 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
3
kenorb

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

2
bobc

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
ViperGeek

Et pour les amateurs d’interface graphique, le moyen le plus simple consiste à installer cette extension Explorer:

http://www.silurian.com/win32/inspect.htm

- Dave

2
ViperGeek

Si vous exécutez le programme, vous pouvez utiliser "Process Monitor" (ProcMon) à partir de Sysinternals Suite .

Son portable et vous donne beaucoup d'informations sur vos processus.

1
yucer
filever /bad *.exe

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

1
Bob