Comment faire pour déterminer si l'exécution du programme a été compilé en 64 bits?
J'ai besoin pour mon programme afin de déterminer s'il a été compilé pour la version 32 bits ou windows 64 bits/CPU. J'ai besoin de choisir un autre serveur COM de drapeau suivant les options de compilation. Des idées?
- Êtes-vous plus intéressé si elle est en cours d'exécution en 32 bits ou en 64 bits?
Vous devez vous connecter pour publier un commentaire.
De vérifier au moment de l'exécution si vous exécutez une application 64 bits:
Pour voir si votre processus est en 64-bits ou 32-bits, vous pouvez simplement vérifier la IntPtr.Taille ou tout autre type de pointeur. Si vous obtenez 4, alors vous êtes en cours d'exécution sur 32 bits. Si vous obtenez 8, alors vous êtes en cours d'exécution sur un système 64 bits.
Ce type d'ordinateur est un processus en tant que:
Vous pouvez vérifier l'PROCESSOR_ARCHITECTURE variable d'environnement pour voir si vous êtes en cours d'exécution sur un x64, ia64 ou machine x86.
Est votre processus en cours d'exécution en vertu de l'émulation:
L'API Win32 IsWow64Process vous dira si vous exécutez une application 32 bits sous x64. Wow64 signifie windows32 sur windows64.
Contrairement à ce que d'autres personnes ont posté le: IsWow64Process ne vous dira pas si vous exécutez une version 32 bits ou 64 bits de l'application. Sur les machines 32 bits, il vous dira FAUX pour les applications 32 bits lorsque vous exécutez, et sur une machine 64 bits, il vous dira VRAI pour une application 32 bits. Il vous dira si votre application est en cours d'exécution en vertu de l'émulation.
Êtes-vous au courant de
de l'Environnement.Is64BitProcess
?Il détermine si le processus en cours d'exécution est un processus 64 bits.
Vous voulez le CORFLAGS de ligne de commande de l'app de Microsoft. http://msdn.microsoft.com/en-us/library/ms164699(SV.80).aspx
Vous pouvez utiliser le IsWow64Process fonction pour déterminer au moment de l'exécution whethehr votre serveur COM est un x64 ou processus win32.
Si vous voulez simplement savoir ce pendant les temps de compilation: le compilateur détermine la _WIN64 macro.
utilisation GetBinaryType la fonction de l'api et vous aurez le type du fichier
c'est le lien vers l'api sur msdn http://msdn.microsoft.com/en-us/library/aa364819(SV.85).aspx
les résultats sont les suivants:
SCS_32BIT_BINARY = 32 bits exe
SCS_64BIT_BINARY = 64 bits exe
SCS_DOS_BINARY = DOS
SCS_OS216_BINARY = OS/2
SCS_WOW_BINARY = 16 bits
SCS_POSIX_BINARY = POSIX basé
SCS_PIF_BINARY = fichier PIF qui s'exécutent sur le DOS
Prendre un coup d'oeil à conditionnel méthodes.
Vous pourriez le faire en se fondant sur la définition de compiler les constantes de temps et en faisant: #fi basés sur ceux de définir une valeur que vous pouvez vérifier pour voir qui de la plateforme de l'application a été compilée. Voir La plate-forme cible/processeur au moment de la compilation.
Les plus faciles autre façon est de vérifier la IntPtr.La taille de la propriété pour voir si c'est 4 (32 bits) ou 8 (64 bits).
Alors qu'il semble étrange de route à faire, vous pouvez dire si vous êtes en 32 bits (ou 64 bits dans WOW64) ou 64 bits .NET code en vérifiant IntPtr.La taille de l'.
Sur 32 bits/WOW64, IntPtr.La taille est de 4.
Sur 64 bits, IntPtr.La taille est de 8.
Source: La migration de 32 bits de Code Managé à 64 bits de Code Managé sur MSDN.
Vous pouvez utiliser les Macros Prédéfinies pour vérifier le type de compilation