public String GetVersionName() { String name = String.Empty; Boolean success = true; Boolean bVersionInfoEx; versionInfo = new OSVERSIONINFOEX(); versionInfo.dwOSVersionInfoSize = Marshal.SizeOf(versionInfo); bVersionInfoEx = GetVersionEx(versionInfo); if (!bVersionInfoEx) { versionInfo = new OSVERSIONINFO(); versionInfo.dwOSVersionInfoSize = Marshal.SizeOf(versionInfo); success = GetVersionEx(versionInfo); if (!success) { return("<获取失败>"); } } switch (versionInfo.dwPlatformId) { // Win NT家族 case VER_PLATFORM_WIN32_NT: if (versionInfo.dwMajorVersion == 5 && versionInfo.dwMinorVersion == 2) { name = "Microsoft Windows Server 2003, "; } if (versionInfo.dwMajorVersion == 5 && versionInfo.dwMinorVersion == 1) { name = "Microsoft Windows XP "; } if (versionInfo.dwMajorVersion == 5 && versionInfo.dwMinorVersion == 0) { name = "Microsoft Windows 2000 "; } if (versionInfo.dwMajorVersion == 6 && versionInfo.dwMinorVersion == 0) { name = "Microsoft Windows Vista "; } if (versionInfo.dwMajorVersion == 6 && versionInfo.dwMinorVersion == 1) { name = "Microsoft Windows 7 "; } if (versionInfo.dwMajorVersion == 6 && versionInfo.dwMinorVersion == 2) { name = "Microsoft Windows 8 "; } // 说明为Windows NT 4.0 SP6及更新的系统 if (bVersionInfoEx) { // 工作站类型 if (((OSVERSIONINFOEX)versionInfo).wProductType == VER_NT_WORKSTATION) { if (versionInfo.dwMajorVersion == 4) { name += "Workstation 4.0 "; } else if ((((OSVERSIONINFOEX)versionInfo).wSuiteMask & VER_SUITE_PERSONAL) == VER_SUITE_PERSONAL) { name += "Home Edition "; } else { name += "Professional Edition "; } } // 服务器类型 else if (((OSVERSIONINFOEX)versionInfo).wProductType == VER_NT_SERVER || ((OSVERSIONINFOEX)versionInfo).wProductType == VER_NT_DOMAIN_CONTROLLER) { if (versionInfo.dwMajorVersion == 5 && versionInfo.dwMinorVersion == 2) { if ((((OSVERSIONINFOEX)versionInfo).wSuiteMask & VER_SUITE_DATACENTER) == VER_SUITE_DATACENTER) { name += "Datacenter Edition "; } else if ((((OSVERSIONINFOEX)versionInfo).wSuiteMask & VER_SUITE_ENTERPRISE) == VER_SUITE_ENTERPRISE) { name += "Enterprise Edition "; } else if ((((OSVERSIONINFOEX)versionInfo).wSuiteMask & VER_SUITE_BLADE) == VER_SUITE_BLADE) { name += "Web Edition "; } else { name += "Standard Edition "; } } else if (versionInfo.dwMajorVersion == 5 && versionInfo.dwMinorVersion == 0) { if ((((OSVERSIONINFOEX)versionInfo).wSuiteMask & VER_SUITE_DATACENTER) == VER_SUITE_DATACENTER) { name += "Datacenter Server "; } else if ((((OSVERSIONINFOEX)versionInfo).wSuiteMask & VER_SUITE_ENTERPRISE) == VER_SUITE_ENTERPRISE) { name += "Advanced Server "; } else { name += "Server "; } } // Windows NT 4.0 else { if ((((OSVERSIONINFOEX)versionInfo).wSuiteMask & VER_SUITE_ENTERPRISE) == VER_SUITE_ENTERPRISE) { name += "Server 4.0, Enterprise Edition "; } else { name += "Server 4.0 "; } } } } break; // Win 9X家族 case VER_PLATFORM_WIN32_WINDOWS: if (versionInfo.dwMajorVersion == 4 && versionInfo.dwMinorVersion == 0) { name = "Microsoft Windows 95 "; if (versionInfo.szCSDVersion[1] == 'C' || versionInfo.szCSDVersion[1] == 'B') { name += "OSR2 "; } } if (versionInfo.dwMajorVersion == 4 && versionInfo.dwMinorVersion == 10) { name = "Microsoft Windows 98 "; if (versionInfo.szCSDVersion[1] == 'A') { name = "SE "; } } if (versionInfo.dwMajorVersion == 4 && versionInfo.dwMinorVersion == 90) { name = "Microsoft Windows Millennium Edition"; } break; // 其他Win32系统 case VER_PLATFORM_WIN32s: name = "Microsoft Win32s"; break; default: name = "Unknown System"; break; } name += versionInfo.szCSDVersion; return(name); }
public extern static Boolean GetVersionEx([In, Out] OSVERSIONINFO versionInfo);