Определите, является ли O / S Windows 7 - PullRequest
9 голосов
/ 20 января 2010

Работает над проектом и должен иметь возможность определить, является ли операционная система Windows 7, Vista или по умолчанию XP. Я понимаю, что могу столкнуться с Win2K и более ранними версиями, но давайте просто скажем, что это не проблема, поскольку другой код поймает это прежде, чем достигнет этой точки. Мое приложение будет в C ++ в настоящее время с использованием VS2005. Я нашел статьи и примеры кода одинаково, но они кажутся слишком раздутыми для моего использования. Просто ищу быстрое и грязное возвращение.

http://msdn.microsoft.com/en-us/library/ms724358%28VS.85%29.aspx

Ответы [ 4 ]

19 голосов
/ 20 января 2010

Список Версия Windows , с использованием GetVersionEx:

Version Number    Description
6.1               Windows 7     / Windows 2008 R2
6.0               Windows Vista / Windows 2008
5.2               Windows 2003 
5.1               Windows XP
5.0               Windows 2000
18 голосов
/ 20 января 2010

Как правило, вы не хотите проводить тестирование с определенным номером версии, а скорее проверяете конкретную функцию. Если вы действительно хотите обнаружить «Windows 7 или новее», однако ...

#include <windows.h>

bool IsWin7OrLater() {
    DWORD version = GetVersion();
    DWORD major = (DWORD) (LOBYTE(LOWORD(version)));
    DWORD minor = (DWORD) (HIBYTE(LOWORD(version)));

    return (major > 6) || ((major == 6) && (minor >= 1));
}

В 2000 году сравните основные и второстепенные значения с 5 и 0 соответственно. Для XP сравните с 5 и 1. Для Vista - 6 и 0.

4 голосов
/ 25 февраля 2016

Windows 8.1 SDK 1) представил ряд функций Version Helper , которые помогают определить версию ОС, на которой запущено приложение:

#include <VersionHelpers.h>

...

    if ( IsWindows7OrGreater() ) {
        // Windows 7 or above
    } else if ( IsWindowsVistaOrGreater() ) {
        // Windows Vista
    } else if ( IsWindowsXPOrGreater() ) {
        // Windows XP
    } else {
        // Unsupported version of Windows
    }

Если вам необходимо различать клиентские и серверные версии Windows, вы можете позвонить IsWindowsServer .

<ч /> 1) Windows 8.1 SDK можно использовать для создания приложений для всех поддерживаемых версий Windows.

3 голосов
/ 20 января 2010

Как правило, вы можете использовать GetVersionEx, чтобы найти версию Windows. Возможно, более безопасный способ - использовать VerifyVersionInfo. Есть примеры C для GetVersionEx и VerifyVersionInfo.

Однако, как неоднократно указывалось в MSDN , проверка версии операционной системы обычно не лучший способ определения наличия конкретной функции .

...