예제 #1
0
        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);
        }
예제 #2
0
 public extern static Boolean GetVersionEx([In, Out] OSVERSIONINFO versionInfo);