![]() |
Некорректная работа GetVersionEx()
Добрый день
Некорректно работает функция GetVersionEx() под Windows 10: возвращается версия OS 6.2 (Windows 8), хотя в соответствии с https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx должно возвращаться 10.0. Почему так происходит? Фрагмент кода: Код:
memset(&osvi, 0x00, sizeof(OSVERSIONINFOEX)); |
Там есть примечание, касающееся Windows 8.1 и Windows 10
* For applications that have been manifested for Windows 8.1 or Windows 10. Applications not manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version value (6.2). To manifest your applications for Windows 8.1 or Windows 10, refer to Targeting your application for Windows. Посмотрите - https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx <!-- Windows 10 --> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> <!-- Windows 8.1 --> <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> |
Цитата:
Но Не всегда используется манифест и не всегда нужно таргетирование. Поэтому встает вопрос: как определить, что версия ОС может быть и другой, нежели возвращает GetVersionEx() (т.е. если мы получили Windows 8 - не факт, может быть и Windows 10). А в идеале - получить версию ОС без таргетирования. |
Цитата:
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx Кроме того, всегда можно использовать WMI (без импорта скрипта, используя IBindCtx и IMoniker интерфейсов), в С++ не смотрел, а в Delphi применяю - 100% определение на любой версии. |
Цитата:
Цитата:
Цитата:
PS. Цитата:
|
Цитата:
Код:
#include <windows.h> |
Спасибо, это
Цитата:
|
Время: 22:14. |
Время: 22:14.
© OSzone.net 2001-