获取操作系统位数、名称、版本名称
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; } } }
相关文章推荐
- Python获取操作系统信息(版本、操作系统名称、位数、架构等)
- 获取windows操作系统名称和版本
- C++中获取操作系统的名称和版本名称
- WindowsAPI使用详解——GetVersion|GetVersionEx 获取操作系统版本和名称
- VC/MFC程序中获取当前Windows操作系统版本名称(2016-04-25修改)
- QT系列:获取IP地址、MAC地址、操作系统版本/位数
- WindowsAPI使用详解——GetVersion|GetVersionEx 获取操作系统版本和名称
- WindowsAPI使用详解——GetVersion|GetVersionEx 获取操作系统版本和名称
- WindowsAPI使用详解——GetVersion|GetVersionEx 获取操作系统版本和名称
- WindowsAPI使用详解——GetVersion|GetVersionEx 获取操作系统版本和名称 - [VC++编程]
- windows 下c++获取操作系统版本名称笔记
- 获取操作系统名称和版本
- WindowsAPI使用详解——GetVersion|GetVersionEx 获取操作系统版本和名称
- VB 6.0 获取操作系统的名称及版本源码(模块)
- WindowsAPI使用详解——GetVersion|GetVersionEx 获取操作系统版本和名称
- 各种浏览器下用JS获取文件域的文件路径的方法/PHP获取用户浏览器和操作系统版本名称
- VC获取操作系统版本和名称
- Linux下查看操作系统的位数和系统名称版本信息
- Linux下查看操作系统的位数和系统名称版本信息
- js获取浏览器信息--名称、版本、操作系统