Comment savoir si je suis sur x64 ou x86 avec .NET?
Question
J'aimerais proposer à mes utilisateurs des liens corrects vers une version mise à niveau de mon programme en fonction de la plate-forme sur laquelle ils s'exécutent. Je dois donc savoir si j'utilise actuellement un système d'exploitation x86 ou x64.
La meilleure solution que j'ai trouvée consiste à utiliser Environment.GetEnvironmentVariable ("PROCESSOR_ARCHITECTURE")
, mais je penserais qu'il existe une fonctionnalité intégrée pour cela?
La solution
Environment.Is64BitOperatingSystem et Environment.Is64BitProcess sont en cours introduit dans .NET 4. Pour .NET 2, vous devez essayer certaines des autres réponses.
Autres conseils
Appelez IsWow64Process
pour savoir si votre processus 32 bits est exécuté dans WOW64 sur un système d'exploitation 64 bits. Vous pouvez appeler GetNativeSystemInfo
pour savoir ce que c'est exactement: le membre wProcessorArchitecture
de SYSTEM_INFO
sera PROCESSOR_ARCHITECTURE_INTEL
pour 32 -bit, PROCESSOR_ARCHITECTURE_AMD64
pour x64 et PROCESSOR_ARCHITECTURE_IA64
pour Itanium d’Intel.
Vérifiez la taille de IntPtr avec Marshal.SizeOf. 32 bits = 4 octets, 64 bits = 8 octets.
Modifier: je ne suis pas sûr que ce soit ce que vous cherchez après avoir relu la question.
Vous pouvez en déterminer beaucoup à l'aide des variables d'environnement telles qu'elles sont utilisées dans C # - Comment obtenir les fichiers de programme (x86) sous Windows 64 bits [Et cela m’arrivait mieux que la réponse de Mike, que j’avais + 1 car j’étais intéressé à trouver le Nom du répertoire Program Files]
Cochez uniquement IntPtr.Size
. Vous devez avoir la plateforme cible en tant que AnyCPU.