Est-ce un bon moyen de déterminer l'architecture du système d'exploitation ?

É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.

请先 登录 后评论

3 réponses

Greg Hurlman

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.

请先 登录 后评论
Curt Hagenlocher

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é !

请先 登录 后评论
Jeremy Privett

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. :)

请先 登录 后评论