zoukankan      html  css  js  c++  java
  • 推断Windows版本号新方法

    曾经在代码中推断用户的Windows操作系统版本号都是通过GetVersion或GetVersionEx获取版本号号,然后比較。
    今天偶然发如今新的Visual Studio提供了新的函数来推断系统版本号,比直接调用API要方便得多。

    为了使用新的函数。须要使用SDK 8.1。我用的VS2013。已经自带了。

    #include "stdafx.h"
    #include <iostream>
    #include <windows.h>			// VersionHelpers.h 依赖于 windows.h
    #include <VersionHelpers.h>     // Windows SDK 8.1 才有喔
    
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	// 是否大于等于 XP
    	if (IsWindowsXPOrGreater())
    		cout << ">= XP" << endl;
    	else
    		cout << " < XP" << endl;
    
    	// 是否大于等于 XP SP1
    	if (IsWindowsXPSP1OrGreater())
    		cout << ">= XP SP1" << endl;
    	else
    		cout << " < XP SP1" << endl;
    
    	// 是否大于等于 XP SP2
    	if (IsWindowsXPSP2OrGreater())
    		cout << ">= XP SP2" << endl;
    	else
    		cout << " < XP SP2" << endl;
    
    	// 是否大于等于 XP SP3
    	if (IsWindowsXPSP3OrGreater())
    		cout << ">= XP SP3" << endl;
    	else
    		cout << " < XP SP3" << endl;
    
    	// 是否大于等于 Vista
    	if (IsWindowsVistaOrGreater())
    		cout << ">= Vista" << endl;
    	else
    		cout << " < Vista" << endl;
    
    	// 是否大于等于 Vista SP1
    	if (IsWindowsVistaSP1OrGreater())
    		cout << ">= Vista SP1" << endl;
    	else
    		cout << " < Vista SP1" << endl;
    
    	// 是否大于等于 Vista SP2
    	if (IsWindowsVistaSP1OrGreater())
    		cout << ">= Vista SP2" << endl;
    	else
    		cout << " < Vista SP2" << endl;
    
    	// 是否大于等于 Win8
    	if (IsWindows8OrGreater())
    		cout << ">= Win8" << endl;
    	else
    		cout << " < Win8" << endl;
    
    	// 是否大于等于 Win8.1
    	if (IsWindows8Point1OrGreater())
    		cout << ">= Win8.1" << endl;
    	else
    		cout << " < Win8.1" << endl;
    
    	// 是否为server版
    	if (IsWindowsServer())
    		cout << "server版" << endl;
    	else
    		cout << "非server版" << endl;
    
    	// 以上的函数都是通过IsWindowsVersionOrGreater实现的
    	// Windows 2000的版本为5.0,所以我们也能够直接通过版本推断
    	if (IsWindowsVersionOrGreater(5, 0, 0))
    		cout << ">= Win 2000" << endl;
    	else
    		cout << " < Win 2000" << endl;
    
    	system("pause");
    	return 0;
    }

    Win7 x64 旗舰版执行效果:



    另外。假设将平台工具集选择为支持XP的话。就不能用上面的函数了,会提示找不到VersionHelper.h头文件。



  • 相关阅读:
    CF1037H
    CF1296F
    CF1446F
    CF1175G
    CF1146G
    CF1303G
    CF1067D
    CF1477E
    COJ16G
    ZJOI2018 迷宫
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7364919.html
Copyright © 2011-2022 走看看