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头文件。



  • 相关阅读:
    BZOJ2821 作诗(Poetize) 【分块】
    BZOJ2724 蒲公英 【分块】
    Codeforces 17E Palisection 【Manacher】
    BZOJ2565 最长双回文串 【Manacher】
    Codeforces 25E Test 【Hash】
    CODEVS3013 单词背诵 【Hash】【MAP】
    HDU2825 Wireless Password 【AC自动机】【状压DP】
    HDU2896 病毒侵袭 【AC自动机】
    HDU3065 病毒侵袭持续中【AC自动机】
    HDU2222 Keywords Search 【AC自动机】
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7364919.html
Copyright © 2011-2022 走看看