Похоже, что нет нового GUID, который можно было бы вставить в app.manifest, чтобы сказать «эй, я поддерживаю Windows 11», как это было раньше. для Windows 7, 8, 8.1 и 10.
В настоящее время я полагаюсь на HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName, чтобы узнать текущую версию Windows есть, но на моей машине, которую я обновил, по-прежнему написано «Windows 10 Enterprise», а не «Windows 11». Enterprise».
Похоже, что в реестре есть только одно место, содержащее текст «Windows 11», и это раздел BCD (конфигурация загрузки), который также можно переименовать таким образом. Я не хочу этого касаться.
Пока я определил лишь несколько способов узнать, работаю ли я в Windows 11:
- Вызов WMI для запроса Win32_OperatingSystem и проверьте свойство Name, в котором просто указано «Windows 11». Это неполное описание (не включает SKU, например «Предприятие»), а WMI относительно медленный и немного хрупкий, поэтому это неприемлемое решение для моего варианта использования.
- Проверьте номер сборки, чтобы убедиться, что он превышает 21996 (бета-сборки) или 22000 (первый общедоступный выпуск). Как указано выше, это не будет включать SKU, и для создания полной строки потребуется некоторая ручная работа.
- Выполнить sysinfo и проанализируйте вывод. Это довольно медленно и, возможно, нестабильно (я не проверял, но вывод может быть локализован на разные языки).
- знает, но это приложение с графическим интерфейсом, поэтому я не могу точно запросить его программно.
Код: Выделить всё
winver
Мне нужно сделать это из библиотеки .NET, но P/Invokes/родные вызовы функций являются приемлемыми решениями.
Подробнее здесь: https://stackoverflow.com/questions/694 ... windows-11
Мобильная версия