Как получить имя ОС, версию в Windows? - PullRequest
2 голосов
/ 23 мая 2011

Какой из них лучше в следующих аспектах, чтобы получить имя ОС, версию ОС в Windows -

  1. время получения информации
  2. совместимость во всех ОС Windows, таких как XP, Vista и выше

systeminfo или wmic команда?Я хотел избежать использования OSVersionInfoEx в C, поскольку нужно жестко закодировать обнаружение маркетингового имени и добавить к работе по обслуживанию, если появится новый вид окон.Пожалуйста, поделитесь своим мнением.

1 Ответ

4 голосов
/ 23 мая 2011

GetVersionEx - Вы не можете получить немного быстрее, чем это для получения основного номера версии ОС.Но вы правы, вы не сможете отобразить новые версии ОС на правильную строку.Рассматривали ли вы просто сделать это:

OSVERSIONINFOEX version = {};
char szOS[MAX_OS_LENGTH];

version.dwOSVersionInfoSize = sizeof(version);
GetVersionEx((OSVERSIONINFO*)&version);

if (MyFunctionToMapVersionToString(&version, szOS) == false)
{
    sprintf(szOS, "Microsoft Windows %d.%d", version.dwMajorVersion, version.dwMinorVersion);
}

WMI - немного больше кода для записи.Но вы, вероятно, могли бы просто сделать это при запуске приложения (или когда это необходимо) и кэшировать результат, если информация снова понадобится.Не похоже, что имя продукта операционной системы изменится после того, как приложение запросит его один раз.:) Что касается обратной совместимости, я уверен, что она отлично работает на старых операционных системах ... но вы собираетесь протестировать ее перед отправкой клиенту, верно?

Если вы хотите недокументированный способ,есть раздел реестра, в котором есть именно то, что вы хотите:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion ("ProductName")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...