2010-12-10 2 views

ответ

6

Пара способов сделать это:

  1. Вы можете разобрать caption поле Win32_OperatingSystem класса WMI.
  2. Вы можете посмотреть OSProductSuite и OperatingSystemSKU поля в классе Win32_OperatingSystem в WMI.
  3. Вы можете порт this C++ program используя P/Invoke.
+1

Звонки WMI занимают 50 мс или более. Ваш код на C++ даже не дает названия редакции. Если вы хотите что-то быстрое и подробное, просто загляните в реестр. HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProductName – Sophit 2016-04-29 00:11:00

+0

@Sophit: 1. re: 50ms: не по моему опыту, по крайней мере, на локальной машине. 2. Как часто вы регистрируете заголовок ОС, что производительность в этой области имеет значение? 3. Реестр не является API и этот ключ не является договорным. – 2016-04-29 04:17:39

8

This blog post идет в подробности о получении «основной» версии Windows (XP/Vista/7/др.), А за ним следует this blog post подробно, как использовать WMI, чтобы получить эту дополнительную информацию.

Код во второй ссылке немного длинный, и я никогда не уверен в копировании больших кусков кода с внешних сайтов без очевидной лицензии, поэтому я не помещаю код в этот ответ.

+1

Я думаю, что можно добавить код, * если его маленький - или небольшой кусок кода *, если вы сохранили ссылку `source`. Кроме того, код поможет в случае, если источник превратится в `0xdeadbeef` (0: – 2010-12-10 05:09:12

+0

Как автор этих сообщений в блоге, у вас есть мое разрешение на копирование кода. В ближайшее время я добавлю лицензию на свой сайт, чтобы избежать этого вопрос в будущем.Спасибо за рассмотрение лицензии/разрешения. – 2011-03-21 21:32:22

2

Сортировка. Используйте this class в this way.

+0

Обратите внимание, что это C# порт ссылки в третьем разделе моего ответа. +1 – 2010-12-10 04:58:51

4

Если вы ссылаетесь на Microsoft.VisualBasic.Devices пространства имен вы можете сделать это:

ComputerInfo computerInfo = new ComputerInfo(); 
string fullName = computerInfo.OSFullName; // i.e. "Microsoft Windows 7 Ultimate" 

Вы можете использовать Microsoft.VisualBasic в ваших C# приложений - это так же, как и любой другой библиотеки.

0

Легкий ответ? Просто загляните в реестр.

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProductName

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ CSDVersion

Он не имеет накладных расходов WMI (50мс каждый вызов) , и он дает полное имя.

Смежные вопросы