【问题标题】:Determine if O/S is Windows 7确定操作系统是否为 Windows 7
【发布时间】:2011-01-07 07:50:53
【问题描述】:
【问题讨论】:
标签:
c++
windows-7
windows-vista
windows-xp
version
【解决方案1】:
Windows Version 的列表,使用 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
【解决方案2】:
一般来说,您不想针对特定版本号进行测试,而是要检查特定功能。但是,如果您确实想检测“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。
【解决方案3】:
Windows 8.1 SDK1)引入了一些Version Helper functions,帮助确定应用程序运行的操作系统版本:
#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 版本构建应用程序。