Я хочу знать во время выполнения, работаю ли я на 32-битных или 64-битных окнах. Структура OSVERSIONINFOEX сообщает мне основную и дополнительную версию, но я предполагаю, что мне нужны номера сборки. Кто-нибудь знает, что они из себя представляют?
Как узнать, работает ли мое приложение в Windows x86 или x64?
Ответы (4)
Если ваше приложение скомпилировано для 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.