2015-12-31 6 views
1

Похоже, что информация о версии в API Win32, которую я знаю и люблю, изменила их поведение. GetVersionEx теперь вернет то, что установлен манифест программы, а не фактическая версия.Какая версия Windows, действительно?

Новая функция IsWindows10OrGreater кажется бессмысленным, так как он доступен только на окнах 10 или больше, так что если программа включает в себя его и успешно связывает это всегда возвращает TRUE.

Но, в установщике или подобной программе, как он определяет, является ли текущая среда действительно Windows 10 или больше? Это нужно, чтобы знать, что нужно загружать, или какие варианты настройки для других программ.

+0

Посмотрите на это: http://stackoverflow.com/questions/31072543/reliable-way-to-get-windows-version-from-registry Я когда-то видел еще лучший подход к SO, но не смог найти его снова – Marged

+0

См. также: http://stackoverflow.com/questions/33566988/ –

ответ

2

Ваше предположение неверно. Функция IsWindows10OrGreater представляет собой макрос , поэтому, если вы используете подходящую последнюю версию SDK, скомпилированная программа будет работать на всех поддерживаемых в настоящее время версиях Windows. (Так же как Windows XP и я думаю даже для Windows 2000.)

(Конечно, эта ошибка вполне понятно, так как документация неправильно.)

Обратите внимание, что проявляется в программы еще должны указать, что поддерживает Windows 10, чтобы макрос работал.

+0

Doc ошибочен: поэтому он фактически не возвращает 8, но при этом возвращает прежнюю старую версию, если ее вызывают в такой версии. Это имеет смысл только, но это заставляет меня понять, насколько это плохо написано. –

+0

Windows 8 на самом деле версия 6.2 (вроде). Вы можете написать свою собственную функцию для 'IsWindows10orGreater'. См. Также этот ответ: http://stackoverflow.com/a/34326017/4603670 –

Смежные вопросы