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



  • 相关阅读:
    原型模式——浅复制与深复制
    初识Java反射
    建造者模式
    利用事件委托弥补观察者模式不足
    利用Java提供的Observer接口和Observable类实现观察者模式
    观察者模式
    再说单例模式的线程安全问题
    组合模式
    MyBatis3入门
    [Swift]LeetCode1216. 验证回文字符串 III | Valid Palindrome III
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7364919.html
Copyright © 2011-2022 走看看