Рейтинг:
2
Jochen Arndt
MSDN, по-видимому, вводит здесь в заблуждение. IsWindows10OrGreater
требуется Windows 10 SDK и (я не совсем уверен в этом), что приложение проявлено для Windows 10.
Если ваше приложение не отображается для Windows 10, IsWindows10OrGreater
будет возвращать false
(или не работает - я опять же не уверен) даже при работе на Windows 10.
Вы также можете взглянуть на VersionHelpers.ч файл. Используемые функции поддерживаются начиная с Windows 2000.
Таким образом, он должен работать при указании Windows 10 в манифесте и вообще не использоваться в противном случае.
[РЕДАКТИРОВАТЬ]
При отсутствии указания Windows 10 в манифесте существуют решения для обнаружения Windows 10. Однако это не рекомендуется корпорацией Майкрософт.
Часть 1: преодоление устаревания Windows 8.1 API GetVersionEx и GetVersion[^]
Получение информации о версии операционной системы-даже для Windows 10![^]
[/РЕДАКТИРОВАТЬ]
Michael Haephrati
Вопрос в том, как одна программа может проверить, является ли используемая ОС Windows 10 (или выше), в то время как такая программа может работать и на любой более ранней версии Windows.
Jochen Arndt
При указании Windows 10 в манифесте он должен работать (но я не могу проверить его на данный момент).
Если нет, то нет никакого "официального" метода, потому что IsWindowsVersionOrGreater, который вызывается IsWindows10OrGreater, вернет false даже тогда, когда приложение работает на Windows 10. То же самое относится и к другим функциям API GetVersion.
Тогда вам придется уйти "официальным" путем.
Некоторые ссылки (я тоже добавлю их в свое решение):
https://www.codeproject.com/Articles/678606/Part-Overcoming-Windows-s-deprecation-of-GetVe
https://www.codeproject.com/Articles/73000/Getting-Operating-System-Version-Info-Even-for-Win