获取系统版本号
获取系统版本是一个很基础的功能吧,因为要跨平台,所以就查了下资料,相对来说,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转自:http://www.awaysoft.com/taor/%e6%af%95%e8%ae%be%e7%ac%94%e8%ae%b0-%e8%8e%b7%e5%8f%96%e7%b3%bb%e7%bb%9f%e7%89%88%e6%9c%ac%e5%8f%b7.html 关于Windows下获取系统信息我想请教个问题,如何获取计算机MAC地址呢?之前我有用过VC下的获取系统信息方式,但Mingw如果使用VC的库会有一系列问题,譬如:重定义问题等。 关于MAC的问题解决掉了,总以为用的的VC的库,忘记了Mingw是包含很多常用的这种库。。。。libnetapi32.a包含了。。
页:
[1]