Определение архитектуры ОС Windows без учета языкового стандарта - PullRequest
0 голосов
/ 29 июля 2010

Я ищу надежный способ определения архитектуры ОС Windows (32-разрядной или 64-разрядной) способом, не зависящим от версии Windows или языкового стандарта системы / языка отображения.Я буду использовать C # для этого.Для пояснения мне нужна архитектура ОС, а не архитектура процессора и не архитектура приложения.

Я знаю, что могу использовать IntPtr.Size, но это зависит от целевой архитектуры приложения.

Я также пытался использовать System.Management.ManagementClass, чтобы получить свойство «OSArchitecture» из Win32_OperatingSystem.Однако значение этого изменяется в зависимости от языка отображения.(Например, если я установил испанский язык отображения, я получу «64 бита», когда на английском языке это «64-битный».)

Спасибо!

Ответы [ 4 ]

1 голос
/ 19 июля 2012

В .NET 4.0 или более поздней версии имеется свойство System.Environment.Is64bitOperatingSystem .

1 голос
/ 05 апреля 2012

Начало установки Windows Architecture:

    string getOSArchitecture()
    {
        if (Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)))
            return "64-bit";
        return "32-bit";
    }
1 голос
/ 29 июля 2010

Вот ответ на вопрос Как определить 64-битную платформу Windows с помощью .net?

В принципе, вы можете сделать это, сначала изучив тип процесса, а затем вызвав соответствующийспособ сделать правильную проверку.

0 голосов
/ 29 июля 2010

Для всех, у кого есть такой же вопрос, это, похоже, тоже помогает. Я не уверен, насколько он крепок:



public bool Is64Bit() {
    return (System.Environment.GetEnvironmentVariable("ProgramFiles(x86)") != null);
}


...