Question Moyen rapide de savoir si une application installée est 64 bits ou 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é 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. J'ai dû le faire parler à une base de données Oracle et pour le faire fonctionner, je l'ai finalement réinstallé dans un chemin de répertoire sans crochets "(" et ")", car cela posait un problème. J'ai également installé des clients Oracle 64 bits et 32 ​​bits.

Pour référence future, je voudrais pouvoir taper une commande "xxxx fred.exe" et le faire me dire si fred.exe aurait besoin d'une configuration 32 bits ou 64 bits (par exemple, sources de données ODBC, etc.).


102
2018-01-31 21:34


origine


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


Réponses:


Si vous exécutez l'application, dans le Gestionnaire des tâches, il doit comporter un * 32 pour indiquer qu'il s'agit de 32 bits. Je suis quasiment sûr que cela a été implémenté dans Server 2003, mais pas positif, espérons que quelqu'un puisse clarifier.

Vous pouvez également le parcourir PEiD. PEiD ne supporte pas les PE 64 bits, il va donc s'étouffer s'il s'agit de 64 bits.

Il y a aussi le célèbre Fichier GNU Pour les fenêtres. Il vous indiquera 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é comme PE32 +, ce qui signifie un exécutable de 64 bits. L'application 32 bits est simplement un PE32, un exécutable 32 bits.


87
2018-01-31 21:37



A saisi GnuFile et ça a bien marché. Merci. - Gary
Vous êtes les bienvenus :) - John T
Une alternative à Task Manager pourrait être Process Explorer, vous pouvez y ajouter la colonne Type d'image. Dans le menu Options, vous pouvez remplacer le gestionnaire de tâches par celui-ci si vous voulez ... :-) - Tom Wijsman
Que montre le fichier GNU avec des programmes tels que Process Explorer, qui ont un stub 32 bits qui détecte qu'il s'exécute sur un système 64 bits et décompresse une image 64 bits à exécuter? - afrazier
À installer file à partir de GnuWin32, téléchargez «package complet» (plutôt que «binaires») depuis gnuwin32.sourceforge.net/packages/file.htm - Colonel Panic


La manière la plus simple, sans installer un autre programme ou exécuter le fichier, est de faire un clic droit sur le fichier, choisissez Propriétés, puis allez le le Compatibilité languette. 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 y a des options grisées et que Vista est le premier mode proposé, c'est 64 bits. Pas besoin de lancer l'application du tout.

Si l'application est déjà lancée, vous pouvez bien entendu toujours 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 un Plate-forme colonne en cliquant avec le bouton droit sur les en-têtes de colonne dans le Détails onglet et choix Sélectionner des colonnes. La colonne contiendra "32 bits" ou "64 bits" selon le cas.


38
2017-08-24 15:57



Cela semble assez raisonnable. - ArtOfWarfare
Ouais j'aime ça. Je veux vérifier pour un seul fichier et je ne voulais pas charger mon ordinateur portable plein de conneries téléchargées ... - Gottlieb Notschnabel
L'avis * 32 n'est pas disponible dans le gestionnaire de tâches de Windows 8, mais il comporte une colonne "Plate-forme" qui, par défaut, n'est pas visible. Voir 7tutorials.com/... - Pino
Merci @Pino. Je n'ai jamais eu aucune raison de le comprendre pendant que j'utilisais Windows 8. (Je suis revenu à Windows 7 quand ma HD est tombée en panne et j'ai réalisé que je n'avais jamais utilisé d'applications W8.) - trlkly


Si vous avez installé Visual Studio ou le Kit de développement Platform, vous pouvez utiliser dumpbin /headers regarder 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: soit 0x14C pour x86, soit 0x8664 pour x64.


25
2018-01-31 22:20



Approche intéressante et détaillée, j'ai vraiment besoin de recommencer à programmer, +1. - John T


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

"PE..L" (code hexadécimal: 504500004C) = 32 bits

ou

"PE..d †" (code hexadécimal: 504500006486) = 64 bits


18
2017-08-27 00:49



J'utilise Total Commander comme gestionnaire de fichiers, donc pour moi, c'est la solution la plus simple. Je peux simplement appuyer sur F3 pour afficher le début du fichier et obtenir la réponse instantanément. - mivk
Ew, ils ont écrit "64" "86" comme octets lisibles par l'homme pour indiquer 64 bits. Horrible :) - Nyerguds
@Nyerguds pourquoi moche? c'est appelé hexspeak et est assez communément 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 ne faites que parler de leetspeak hexadécimal. C'est littéralement utiliser le nombre 100 comme signifiant "64" simplement parce qu'il ressemble à un 6 et un 4 en hexadécimal. - Nyerguds
@Nyerguds la chaîne "6486" est en hexadécimal, ce qui évidemment est hexspeak où vous lisez des chiffres hexadécimaux en tant que caractères. Quel est le problème avec 0xDEADBEEF lorsque vous utilisez 0xD pour D car il ressemble à D? Si c'est moche alors BCD est aussi moche où vous utilisez littéralement le nombre 100 pour dire 64 - phuclv


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

Cette application est basée sur Lecteur portable exécutable MiTeC. Il lit et affiche les propriétés et la structure des fichiers exécutables. Il est compatible avec les types de fichiers PE32 (Portable Executable), PE32 + (64bit), NE (Windows 3.x New Executable) 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 fourni avec une interface graphique et vous permet d’explorer la structure des fichiers binaires Windows.
Malheureusement, il ne semble même pas accepter qu'un fichier binaire cible s'ouvre à partir de la ligne de commande. Mais le détail qu'il donne peut être utile dans certains cas.


5
2017-09-03 14:56





Vous pouvez vérifier en utilisant sigcheck.exe qui fait partie de Suite Sysinternals, 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
2018-05-09 10:17



Cela fonctionne également pour les DLL. - user34660


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
2018-04-05 04:28





Et pour vous, amateurs de GUI, le plus simple est d'installer cette extension Explorer:

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

- Dave


2
2018-04-05 04:57



"L'installation a échoué". Yay. - ArtOfWarfare


Dépendance Walker  est un outil utile pour vérifier non seulement les fichiers exe mais aussi les fichiers DLL. Un fichier DLL ou EXE de 64 bits comportera une petite icône 64 à côté.


2
2018-02-14 23:32