您的位置:首页 > 其它

获取操作系统位数、名称、版本名称

2013-01-30 16:49 746 查看
// 安全的取得真实系统信息
VOID SafeGetNativeSystemInfo(__out LPSYSTEM_INFO lpSystemInfo)
{
if (NULL == lpSystemInfo)
return;
typedef VOID (WINAPI *LPFN_GetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo);
LPFN_GetNativeSystemInfo nsInfo =
(LPFN_GetNativeSystemInfo)GetProcAddress(GetModuleHandle(_T("kernel32")), "GetNativeSystemInfo");;
if (NULL != nsInfo)
{
nsInfo(lpSystemInfo);
}
else
{
GetSystemInfo(lpSystemInfo);
}
}

// 获取操作系统位数
int GetSystemBits()
{
SYSTEM_INFO si;
SafeGetNativeSystemInfo(&si);
if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||
si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64 )
{
return 64;
}
return 32;
}

// 获取操作系统的名称
void GetSystemName(CString& osname)
{
SYSTEM_INFO info;        //用SYSTEM_INFO结构判断64位AMD处理器
GetSystemInfo(&info);    //调用GetSystemInfo函数填充结构
OSVERSIONINFOEX os;
os.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

osname = _T("unknown OperatingSystem.");

if(GetVersionEx((OSVERSIONINFO *)&os))
{
//下面根据版本信息判断操作系统名称
switch(os.dwMajorVersion)//判断主版本号
{
case 4:
switch(os.dwMinorVersion)//判断次版本号
{
case 0:
if(os.dwPlatformId==VER_PLATFORM_WIN32_NT)
osname =_T("Microsoft Windows NT 4.0"); //1996年7月发布
else if(os.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
osname =_T("Microsoft Windows 95");
break;
case 10:
osname =_T("Microsoft Windows 98");
break;
case 90:
osname =_T("Microsoft Windows Me");
break;
}
break;

case 5:
switch(os.dwMinorVersion)	//再比较dwMinorVersion的值
{
case 0:
osname =_T("Microsoft Windows 2000");//1999年12月发布
break;

case 1:
osname =_T("Microsoft Windows XP");//2001年8月发布
break;

case 2:
if(os.wProductType==VER_NT_WORKSTATION
&& info.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
{
osname =_T("Microsoft Windows XP Professional x64 Edition");
}
else if(GetSystemMetrics(SM_SERVERR2)==0)
osname =_T("Microsoft Windows Server 2003");//2003年3月发布
else if(GetSystemMetrics(SM_SERVERR2)!=0)
osname =_T("Microsoft Windows Server 2003 R2");
break;
}
break;

case 6:
switch(os.dwMinorVersion)
{
case 0:
if(os.wProductType == VER_NT_WORKSTATION)
osname =_T("Microsoft Windows Vista");
else
osname =_T("Microsoft Windows Server 2008");//服务器版本
break;
case 1:
if(os.wProductType == VER_NT_WORKSTATION)
osname =_T("Microsoft Windows 7");
else
osname =_T("Microsoft Windows Server 2008 R2");
break;
}
break;
}
}//if(GetVersionEx((OSVERSIONINFO *)&os))

}


// 获取操作系统的版本名称
void GetVersionMark(CString& vmark)
{
OSVERSIONINFOEX os;
os.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);
vmark = _T("");

if(GetVersionEx((OSVERSIONINFO*)&os))
{
switch(os.dwMajorVersion)
{                //先判断操作系统版本
case 5:
switch(os.dwMinorVersion)
{
case 0:                  //Windows 2000
if(os.wSuiteMask==VER_SUITE_ENTERPRISE)
vmark=_T("Advanced Server");
break;
case 1:                  //Windows XP
if(os.wSuiteMask==VER_SUITE_EMBEDDEDNT)
vmark=_T("Embedded");
else if(os.wSuiteMask==VER_SUITE_PERSONAL)
vmark=_T("Home Edition");
else
vmark=_T("Professional");
break;
case 2:
if(GetSystemMetrics(SM_SERVERR2)==0
&&os.wSuiteMask==VER_SUITE_BLADE)  //Windows Server 2003
vmark=_T("Web Edition");
else if(GetSystemMetrics(SM_SERVERR2)==0
&& os.wSuiteMask==VER_SUITE_COMPUTE_SERVER)
vmark=_T("Compute Cluster Edition");
else if(GetSystemMetrics(SM_SERVERR2)==0
&& os.wSuiteMask==VER_SUITE_STORAGE_SERVER)
vmark=_T("Storage Server");
else if(GetSystemMetrics(SM_SERVERR2)==0
&& os.wSuiteMask==VER_SUITE_DATACENTER)
vmark=_T("Datacenter Edition");
else if(GetSystemMetrics(SM_SERVERR2)==0
&& os.wSuiteMask==VER_SUITE_ENTERPRISE)
vmark=_T("Enterprise Edition");
else if(GetSystemMetrics(SM_SERVERR2)!=0
&& os.wSuiteMask==VER_SUITE_STORAGE_SERVER)
vmark=_T("Storage Server");
break;
}
break;

case 6:
switch(os.dwMinorVersion)
{
case 0:
if(os.wProductType!=VER_NT_WORKSTATION
&& os.wSuiteMask==VER_SUITE_DATACENTER)
vmark=_T("Datacenter Server");
else if(os.wProductType!=VER_NT_WORKSTATION
&& os.wSuiteMask==VER_SUITE_ENTERPRISE)
vmark=_T("Enterprise");
else if(os.wProductType==VER_NT_WORKSTATION
&& os.wSuiteMask==VER_SUITE_PERSONAL)  //Windows Vista
vmark =_T("Home");
break;
}
break;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: