Как найти название продукта Windows в Windows 11?C#

Место общения программистов C#
Ответить
Anonymous
 Как найти название продукта Windows в Windows 11?

Сообщение Anonymous »

Windows 11, выпущенная вчера, почти везде сообщает о себе как Windows 10.0 — RtlGetVersion говорит 10.0, а если вы спросите VerifyVersionInfo, установлена ​​ли у вас версия 11.0 или выше, он ответит «нет».
Похоже, что нет нового 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 и проанализируйте вывод. Это довольно медленно и, возможно, нестабильно (я не проверял, но вывод может быть локализован на разные языки).
  • знает, но это приложение с графическим интерфейсом, поэтому я не могу точно запросить его программно.
Кто-нибудь Есть ли у вас какие-либо другие идеи о том, как эффективно и полно извлечь строку «Windows 11 Enterprise» (или «Windows 11 Pro» и т. д., в зависимости от обстоятельств) из моей операционной системы? Откуда его берут WMI, sysinfo и winver?
Мне нужно сделать это из библиотеки .NET, но P/Invokes/родные вызовы функций являются приемлемыми решениями.

Подробнее здесь: https://stackoverflow.com/questions/694 ... windows-11
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»