毕设笔记 获取系统版本号

8 2 月

获取系统版本是一个很基础的功能吧,因为要跨平台,所以就查了下资料,相对来说,Linux比较简单。

#ifdef WIN32
#include <windows.h>
static char * _T(char *s){return s;}

static char *const_getSystemVersion()
{
SYSTEM_INFO info;                                   //用SYSTEM_INFO结构判断64位AMD处理器
GetSystemInfo(&info);                               //调用GetSystemInfo函数填充结构
OSVERSIONINFOEX os;
os.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);  /*在调用函数前必须用sizeof(OSVERSIONINFOEXA)填充dwOSVersionInfoSize结构成员*/
if(GetVersionEx((OSVERSIONINFO *)&os))                  /*调用GetVersionEx函数OSVERSIONINFOEX结构必须将指针类型强制转换*/
{
char * vname;

//下面根据版本信息判断操作系统名称

switch(os.dwMajorVersion){                        //判断主版本号
case 4:
switch(os.dwMinorVersion){                //判断次版本号
case 0:
if(os.dwPlatformId==VER_PLATFORM_WIN32_NT)
vname=_T("Microsoft Windows NT 4.0");                //1996年7月发布
else if(os.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
vname=_T("Microsoft Windows 95");
break;
case 10:
vname=_T("Microsoft Windows 98");
break;
case 90:
vname=_T("Microsoft Windows Me");
break;
}
break;
case 5:
switch(os.dwMinorVersion){               //再比较dwMinorVersion的值
case 0:
vname=_T("Microsoft Windows 2000");                    //1999年12月发布
break;
case 1:
vname=_T("Microsoft Windows XP");                    //2001年8月发布
break;
case 2:
if(os.wProductType==VER_NT_WORKSTATION &&
info.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)

vname=_T("Microsoft Windows XP Professional x64 Edition");
else if(GetSystemMetrics(SM_SERVERR2)==0)
vname=_T("Microsoft Windows Server 2003");        //2003年3月发布
else if(GetSystemMetrics(SM_SERVERR2)!=0)
vname=_T("Microsoft Windows Server 2003 R2");
break;
}
break;
case 6:
switch(os.dwMinorVersion){
case 0:
if(os.wProductType==VER_NT_WORKSTATION)/*

VER_NT_WORKSTATION是桌面系统 */
vname=_T("Microsoft Windows Vista");
else
vname=_T("Microsoft Windows Server 2008");          //服务器版本
break;
case 1:
if(os.wProductType==VER_NT_WORKSTATION)
vname=_T("Microsoft Windows 7");
else
vname=_T("Microsoft Windows Server 2008 R2");
break;
}
break;
default:
vname=_T("未知Windows操作系统");
}
return vname;
}
else
return _T("获取系统版本失败!");
}
#endif

#ifdef __linux__
static char *const_getSystemVersion()
{
static char *version = NULL;

if (version) return version;

FILE *fp = fopen("/etc/issue", "r");
if (!fp) {
version = "未知的Linux操作系统";
return version;
}
version = g_new(char, 100);
memset(version, 0, sizeof(char) * 100);
fgets(version, 99, fp);
fclose(fp);
return version;
}
#endif

 

One Reply to “毕设笔记 获取系统版本号”

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注