В .NET 2,0 C# приложения я использую следующий код для определения операционной системы платформы:Как обнаружить 64-битную платформу Windows с .NET?
string os_platform = System.Environment.OSVersion.Platform.ToString();
Это возвращает «Win32NT». Проблема в том, что он возвращает «Win32NT» даже при работе в 64-разрядной версии Windows Vista.
Есть ли другой способ знать правильную платформу (32 или 6 бит)?
Обратите внимание, что он также должен обнаруживать бит 6 при запуске в виде 32 битных приложений на Windows 6 бит.
При работе на 32-разрядной ОС любой вызов IsWow64Process вызовет исключение, поскольку эта запись отсутствует в файле kernel32.dll. Вы должны проверить решение, показанное в кодексе, по адресу http://1code.codeplex.com/SourceControl/changeset/view/39074#842775. У меня также есть решение на основе этого кода, приведенного в нижней части этой страницы, который использует методы расширения если вам нужно повторное использование кода. – dmihailescu 2011-02-02 18:29:25
IsWow64Process был представлен с Win XP SP2. Этот код отлично работает, если вам требуется XP SP2 или любая более новая версия. – Marc 2011-02-04 09:12:16
@dmihailescu, вы можете просто использовать DoWin32MethodExist перед вызовом IsWow64Process, что и делает реализация is64BitOperatingSystem .net 4.0. – noobish 2011-03-18 23:04:53