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?

Était-ce utile?

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.

à partir d'ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top