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



  • 相关阅读:
    GRUB2 分析 (三)
    GRUB2 分析 (二)
    快速填充像素的方法
    GRUB2 分析 (一)
    自制Linux映像和发行版Robomind
    为MarS Board安装无线网卡Linux驱动
    alsa音频播放过程中的基本概念
    常见Soc平台图形内存管理学习笔记
    snprintf笔记
    linux命令行配置wifi连接并通过ssh代理开启socks代理
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7364919.html
Copyright © 2011-2022 走看看