Consulter le registre est parfaitement valable, tant que vous pouvez être sûr que l'utilisateur de l'application aura toujours accès à ce dont vous avez besoin.
Étant donné que la classe WMI Win32_OperatingSystem inclut uniquement OSArchitecture dans Windows Vista, j'ai rapidement rédigé une méthode utilisant le registre pour essayer de déterminer si le système actuel est un système 32 ou 64 bits.
private Boolean is64BitOperatingSystem()
{
RegistryKey localEnvironment = Registry.LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment');
String processorArchitecture = (String) localEnvironment.GetValue('PROCESSOR_ARCHITECTURE');
if (processorArchitecture.Equals('x86')) {
return false;
}
else {
return true;
}
}
Cela a plutôt bien fonctionné pour nous jusqu'à présent, mais je ne sais pas à quel point j'aime parcourir le registre. Est-ce une pratique assez courante ou existe-t-il une meilleure méthode ?
Modifier : Wow, ce code est beaucoup plus joli dans l'aperçu. J'envisagerai de créer un lien vers un pastebin ou quelque chose du genre, la prochaine fois.
Consulter le registre est parfaitement valable, tant que vous pouvez être sûr que l'utilisateur de l'application aura toujours accès à ce dont vous avez besoin.
Le moyen le plus simple de tester 64 bits sous .NET consiste à vérifier la valeur de IntPtr.Size.
EDIT : Oh ! Cela vous indiquera si le processus actuel est 64 bits ou non, et non le système d'exploitation dans son ensemble. Désolé !
Le moyen le plus simple de tester 64 bits sous .NET consiste à vérifier la valeur de IntPtr.Size.
Je crois que la valeur de IntPtr.Size est de 4 pour une application 32 bits qui s'exécute sous WOW, n'est-ce pas ?
Modifier : @Edit : Oui. :)