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

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


person hatcat    schedule 14.01.2009    source источник


Ответы (4)


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

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

person Roger Lipscombe    schedule 14.01.2009

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

person jeffm    schedule 14.01.2009

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

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

person Michael Burr    schedule 14.01.2009

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

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

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

person Community    schedule 14.01.2009