2010-11-03 16 views
6

Je dois savoir si un fichier .exe donné est 32 bits ou 64 bits, avant de le lancer. IsWow64Process est inutile ici, car il n'y a pas encore de processus. Y a-t-il une autre API qui me donnera cette information?Déterminer par programme si natif .exe est 32 bits ou 64 bits

+1

duplication possible de [Comment trouver si la DLL native est compilée en tant que x64 ou x86?] (Http://stackoverflow.com/questions/480696/how-to-find-if-native-dll-is- compilé-comme-x64-ou-x86) –

+0

En fait, je retire le dup - c'est beaucoup plus facile pour les EXE que pour les DLL, semble-t-il. –

Répondre

11

Si vous voulez vraiment faire cela uniquement pour les fichiers EXE et non DLL, utilisez simplement GetBinaryType.

Détermine si un fichier est un fichier exécutable (.exe) , et si oui, qui sous-système exécute le fichier exécutable .

+0

Oui, c'est * exactement * ce que je veux, et c'est beaucoup plus facile que de lire l'en-tête de PE moi-même, qui est ce que le autres réponses suggérées. Merci. –

+1

Vous avez de la chance, vous avez juste besoin d'EXEs :-) Ces contorsions complexes semblent nécessaires pour faire cela pour les DLL. Un écart dans Win32, imo. –

5

Cette post va sûrement vous aider.

C# est lié mais cela vous donnera l'idée.

+0

+1 pour le faire de la bonne façon :) – Flexo

+0

+1, j'allais proposer ceci :) – ruslik

1

Cette information est disponible dans l'un des en-têtes du PE File file format (le format utilisé pour les exe et dll). Les informations contenues dans ces en-têtes peuvent être extraites par programmation (elles sont à un décalage spécifié) ou plus sûrement interrogées via l'API Win32.

D'accord, Liviu a obtenu le bon pointeur pour vous.