确定O/S是否为Windows 7

Jef*_*eff 9 c++ windows-xp version windows-vista windows-7

在项目上工作,需要能够确定操作系统是Windows 7,Vista还是默认为XP.我知道我可能遇到Win2K和早期版本,但我们只是说这不是一个问题,因为其他代码会在它到达这一点之前捕获它.我的应用程序将在C++中暂时使用VS2005.我发现文章和示例代码相似,但它们似乎对我的用途臃肿.只是寻找一个快速和肮脏的回报.

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

Pau*_*tos 19

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
Run Code Online (Sandbox Code Playgroud)


Chr*_*isV 18

通常,您不希望针对特定版本号进行测试,而是检查特定功能.如果你真的想要检测"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));
}
Run Code Online (Sandbox Code Playgroud)

对于2000,分别将major和minor与5和0进行比较.对于XP,比较5和1.对于Vista,6和0.


IIn*_*ble 5

Windows 8.1 SDK 1)引入了许多版本帮助函数,这些函数有助于确定应用程序运行的操作系统版本:

#include <VersionHelpers.h>

...

    if ( IsWindows7OrGreater() ) {
        // Windows 7 or above
    } else if ( IsWindowsVistaOrGreater() ) {
        // Windows Vista
    } else if ( IsWindowsXPOrGreater() ) {
        // Windows XP
    } else {
        // Unsupported version of Windows
    }
Run Code Online (Sandbox Code Playgroud)

如果您需要区分 Windows 的客户端和服务器版本,您可以调用IsWindowsServer


1) Windows 8.1 SDK 可用于为所有受支持的 Windows 版本构建应用程序。