Как я узнаю, работает ли мое приложение на x86 или x64 Windows?

StackOverflow https://stackoverflow.com/questions/443227

  •  22-07-2019
  •  | 
  •  

Вопрос

Я хочу знать, во время выполнения, работаю ли я на 32-битных или 64-битных окнах. Структура OSVERSIONINFOEX сообщает мне мажорную и минорную версию, но я предполагаю, что мне нужны номера сборки. Кто-нибудь знает, кто они?

Это было полезно?

Решение

Если ваше приложение скомпилировано для 64-битной системы, ответ прост: вы работаете в 64-битной Windows.

Если ваше приложение скомпилировано для 32-разрядной версии, вам нужно вызвать IsWow64Process . Эта функция экспортируется только в Windows XP или более поздней версии; если вы хотите поддерживать более ранние версии Windows, вам нужно использовать GetProcAddress, чтобы получить указатель на эту функцию.

Другие советы

Предполагая, что вы используете C ++, есть очень хороший класс обнаружения ОС здесь .

Номер сборки уже можно получить из структуры OSVERSIONINFOEX .

Если вы 32-битный процесс и хотите знать, работаете ли вы под WOW64 (т.е. 64-битной ОС), вызовите IsWow64Process () . (требуется XP SP2 или более поздняя версия)

Я использую WMI.

выберите * из Win32_OperatingSystem

Получите первый экземпляр, а затем выберите атрибут Version. Для WinXP возвращается 5.1.2600.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top