我想知道Windows的版本,比如是95还是98、2000、XP,等等,怎么判断,望不吝赐教!

解决方案 »

  1.   

    注册表中:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion中的ProductName
      

  2.   

    function GetWindowsVersion: string;
    var
      VersionInfo: TOSVersionInfo;
    begin
      VersionInfo.dwOSVersionInfoSize := SizeOf(VersionInfo);
      GetVersionEx(VersionInfo);
      with VersionInfo do
      begin
        case dwPlatformid of
          0: begin
               result := 'Windows 3.11';
             end;      1: begin
               case dwMinorVersion of
               0 : result := 'Windows 95';
               10: begin
                    if ( szCSDVersion[ 1 ] = 'A' ) then
                       Result :='Windows 98 SE'
                    else
                       Result := 'Windows 98';
                   end;
               90 : result := 'Windows Millenium';
              else
               result := 'Unknown Version';
              end;
            end;
          2: begin
              case dwMajorVersion of
               3 : result := 'Windows NT ' +
                                    IntToStr(dwMajorVersion) + '.' +
                                    IntToStr(dwMinorVersion);
               4 : result := 'Windows NT ' +
                                    IntToStr(dwMajorVersion) + '.' +
                                    IntToStr(dwMinorVersion);
               5 : begin
                     case dwMinorVersion of
                         0 : result := 'Windows 2000';
                         1 : result := 'Windows XP';
                     end;
                   end;
                else
                   result := 'Unknown Version';
              end;
              if szCSDVersion <> '' then
                 result := result + ' Service pack: ' + szCSDVersion;
            end;
         else
            result := 'Unknown Platform';
        end;
        result := result + ', Build: ' +
                  IntToStr(Loword(dwBuildNumber)) ;
      end;
    end;
      

  3.   

    可以参考下面,很容易的得到版本的原始信息。根据需要再作处理
    GetVersion取到的版本信息是一个整体,要取得某个主版本或者次版本很麻烦,用一个记录就可以简单解决了:
    procedure TForm1.Button1Click(Sender: TObject);
    Type
      TVersion = packed record
         WinVer,
         WinRev,
         DosRev,
         DosVer: byte;
      end;
    var
      V:Dword;
    begin
      V:=GetVersion;
      Label1.Caption :=Format('Windows Version:%d.%d,Dos Version:%d.%d',[TVersion(V).WinVer,TVersion(V).WinRev,Tversion(V).DosVer,TVersion(V).DosRev]);
    end;
    //Delphi中还有以下的系统常量
    Win32BuildNumber         //Build版本号
    Win32Platform            //系统平台,2=Win32系统
    Win32MajorVersion        //主版本号
    Win32MinorVersion        //次版本号
    Win32CSDVersion          //其他版本信息,例如"Service Pack 2"