Как мне получить описание текущей версии ОС в windows?

Мне нужно получить простое описание ОС, например «Windows XP (SP2)» или «Windows 2000 Professional», чтобы включить его в отладочный код. В идеале я хотел бы просто получить его, вызвав функцию GetOSDisplayName.

Есть ли такая функция для программирования на C ++ win32?


person Colen    schedule 13.10.2009    source источник


Ответы (5)


Взгляните на это: http://msdn.microsoft.com/en-us/library/ms724429(VS.85).aspx

person Nick Bedford    schedule 13.10.2009
comment
Надеялся на встроенную функцию, но я думаю, что это лучшее, что есть. :( Спасибо. - person Colen; 14.10.2009
comment
Win32 - не самый забавный API для использования :-P - person Nick Bedford; 14.10.2009

Если вы ищете версию productName +, которую использует маркетинг, она находится в реестре:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Product Name

На моем компьютере написано «Windows 8.1 Pro».

person G Huxley    schedule 08.05.2014

а также взгляните на это: http://www.codeproject.com/KB/macros/winver_macros.aspx

person didito    schedule 13.10.2009

А вот пример того, с чем я недавно столкнулся:

OSVERSIONINFO osvi;

ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

GetVersionEx(&osvi);
// use osvi.dwMajorVersion and osvi.dwMinorVersion

Вам нужно будет выполнить несколько тестов, чтобы проверить, каким версиям окон соответствуют номера. это может помочь: http://en.wikipedia.org/wiki/History_of_Microsoft_Windows#Windows_NT

// (bad) example to check if we're running Windows XP
if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1)
{
    // Windows XP
}
person Josh    schedule 14.10.2009

Ниже вы найдете ссылку на связанный с .NET вопрос и набор ответов. Ответ C ++ / Win32 практически такой же после некоторого тривиального сопоставления между .NET и C ++ / Win32.

Как перевести ОС MS Windows номера версий в названиях продуктов в .NET?

person Thomas Bratt    schedule 06.05.2010