Получить текущий выпуск Windows 11 на Python

В Python 3.8.10 я не могу получить правильный выпуск Windows, я запускаю Windows 11 Insider Preview, но в выходных данных говорится, что это Windows 10

Любой обходной путь?

Изменить: на данный момент единственный способ обнаружить W11 - это

      wmic os get name

2 ответа

Решение

решение, которое я закончил:

      def IsWin11():
    if sys.getwindowsversion().build > 20000:return True
    else:return False

В platform.release() называть следы win32_ver() который затем вызывает функцию C sys_getwindowsversion_impl().

Этот вызов C просто извлекает версию файла, то есть не самой Windows, используя GetFileVersionInfoW() + VerQueryValueW() Функции API Win32.

Так что пока kernel32.dll При изменении версии файла он останется Windows 10. Проверьте вручную, совпадает ли результат в этой системе, а если нет, откройте ошибку для CPython.

Относительно того, правильная это реализация или нет, я бы сказал, спорный. По-видимому, это было в прошлом, но теперь это не так, поэтому я просто использую ctypes для GetProductInfo() или вытащить из реестра.

Однако вы используете предварительную версию, что является одной из причин, по которой версия может быть «неправильной», потому что, возможно, разработчики Windows предполагают, что она будет по-прежнему 10 вместо 11, и где-то в системе есть флаг, говорящий, что это «10». + «превью».

Другие вопросы по тегам