【转】如何得到Windows操作系统版本信息(包括2003 R2、Vista和Windows 2008 Server)

本文提供了一段C++代码,用于通过WinAPI获取Windows操作系统,包括Windows Server 2003 R2、Vista和Windows 2008 Server的详细版本信息。代码展示了如何利用GetNativeSystemInfo函数和产品类型常量来区分不同版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在程序中判断Windows版本这本应该是一个极其简单的API就能完成的工作,但由于微软的失误,使得Windows操作系统家族的版本正变得混乱不堪,一个最新的例子是Windows Vista和Windows 2008 Server的版本均为6.0。上世纪90年代Windows 9x和Windows NT的版本混乱主要是因为程序员的错误(或失误)导致的,那么这一次的版本混乱又是因为什么导致的?如果是某些人为的决定导致这样的结果,我只能说这个决定是极其愚蠢的,因为这个愚蠢的决定已经导致版本的意义完全失去了。
  废话不多说了,直接贴代码,以下代码可在Vs2005/Vs2008下编译通过。
  #include "stdafx.h"#include #include #include < WSTR(x) L##x
  #endif #ifndef SM_SERVERR2#define SM_SERVERR2 89
  #endif
  // 前置声明
  WCHAR* GetOperationSystemInfoOld( WCHAR* szBuffer,size_t szLength);// GetNativeSystemInfo函数原型(WOW64) (XP,Vista,2003,2008)
  typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO lpSystemInfo);//
  typedef BOOL (WINAPI *// ProductType常量
  #define PRODUCT_UNDEFINED 0x00000000 //
  #define PRODUCT_ULTIMATE 0x00000001 //
  #define PRODUCT_HOME_BASIC 0x00000002 //
  #define PRODUCT_HOME_PREMIUM 0x00000003 //
  #definePRODUCT_ENTERPRISE 0x00000004 //
  #define PRODUCT_HOME_BASIC_N 0x00000005 //
  #define PRODUCT_BUSINESS 0x00000006 //
  #define PRODUCT_STANDARD_SERVER 0x00000007 Server Standard Edition (full installation)
  #define PRODUCT_DATACENTER_SERVER 0x00000008 // Server Datacenter Edition (full installation)
  #define PRODUCT_SMALLBUSINESS_SERVER 0x00000009 //
  #define PRODUCT_ENTERPRISE_SERVER 0x0000000A // Server Enterprise Edition (full installation)
  #define PRODUCT_STARTER 0x0000000B
  #define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C // Server Datacenter Edition (core installation)
  #define PRODUCT_STANDARD_SERVER_CORE 0x0000000D //

本文转自
http://blog.youkuaiyun.com/jackjoy/archive/2007/11/30/1908376.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值