处理项目并需要能够确定操作系统是Windows 7,Vista还是默认为XP。我知道我可能遇到Win2K和早期版本,但我们只是说这不是一个问题,因为其他代码会在它到达这一点之前捕获它。我的应用程序将在C ++中暂时使用VS2005。我发现文章和示例代码相似,但它们似乎对我的用途臃肿。只是寻找快速而肮脏的回报。
http://msdn.microsoft.com/en-us/library/ms724358%28VS.85%29.aspx
答案 0 :(得分:19)
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
答案 1 :(得分: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));
}
对于2000,将major和minor分别与5和0进行比较。对于XP,比较5和1.对于Vista,6和0。
答案 2 :(得分:4)
Windows 8.1 SDK 1)引入了一些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版本构建应用程序。
答案 3 :(得分:3)
通常,您可以使用GetVersionEx
查找Windows版本。更安全的方法可能是使用VerifyVersionInfo
。 GetVersionEx
和VerifyVersionInfo
都有C示例。
但是,正如MSDN checking for the operating system version is usually not the best way of determining whether a particular feature is present上一再声明的那样。