在程序中判断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
废话不多说了,直接贴代码,以下代码可在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