Как я узнаю, работает ли мое приложение на x86 или x64 Windows?
Вопрос
Я хочу знать, во время выполнения, работаю ли я на 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.