如何让程序判断系统是98还是2000或xp。

解决方案 »

  1.   

    取得系统版本  GetVersionEx
    类似方法
      

  2.   

    unit unitFrmMain;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Registry;type
      TForm1 = class(TForm)
        Button1: TButton;
        Label1: TLabel;
        Button2: TButton;
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Edit4: TEdit;
        Edit5: TEdit;
        Edit6: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    var
      OSVI: OSVERSIONINFO;
    begin
      OSVI.dwOSversioninfoSize := Sizeof(OSVERSIONINFO);
      GetVersionEx(OSVI);
      label1.Caption := IntToStr(OSVI.dwMajorVersion) + ','
        + IntToStr(OSVI.dwMinorVersion) + ','
        + IntToStr(OSVI.dwBuildNumber) + ','
        + IntToStr(OSVI.dwPlatformId) + ','
        + OSVI.szCSDVersion;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      Reg: TRegistry;
    begin
      Reg := TRegistry.Create;
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      Reg.OpenKey('Software\Microsoft\Windows NT\CurrentVersion', False);
      Edit1.Text := '当前路径:' + Reg.CurrentPath;
      Edit2.Text := '产品系列号:' + Reg.ReadString('ProductId');
      Edit3.Text := '产品名:' + Reg.ReadString('ProductName');//这个就是你要的
      Edit4.Text := '注册公司名称:' + Reg.ReadString('RegisteredOrganization');
      Edit5.Text := '用户名:' + Reg.ReadString('RegisteredOwner');
      Edit6.Text := '软件类型:' + Reg.ReadString('SoftwareType');
      Reg.CloseKey;
      Reg.Free;
    end;
    end.
      

  3.   

    获取windows版本信息 
    可以通过Windows API函数GetVersionEx来获得。 
    具体程序如下:
    Procedure Tform1.Button1Click(sender:TObject); 
            Var()
    OSVI:OSVERSIONINFO; 
            begin()
    OSVI.dwOSversioninfoSize:=Sizeof(OSVERSIONINFO); 
    GetVersionEx(OSVI); 
    label1.Caption:=IntToStr(OSVI.dwMinorVersion)+',' 
    +IntToStr(OSVI.dwMinorVersion)+',' 
    +IntToStr(OSVI.dwBuildNumber)+',' 
    +IntToStr(OSVI.dwPlatformId)+',' 
    +OSVI.szCSDVersion; 
    end; end.
      

  4.   

    const strOsType: array[0..7] of string=('osUnknown','osWin95','osWin98','osWin98se','osWinme','osWinnt4','osWin2k','osWinxp');
    type OSType=(osUnknown,osWin95,osWin98,osWin98se,osWinme,osWinnt4,osWin2k,osWinxp);Function GetOSVersion : OSType;
    Var
      osVerInfo : TOSVersionInfo;
      majorVer, minorVer : Integer;
    Begin  //Result := osUnknown;
      osVerInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );
      If ( GetVersionEx( osVerInfo ) ) Then 
      Begin
        majorVer := osVerInfo.dwMajorVersion;
        minorVer := osVerInfo.dwMinorVersion;
        Case ( osVerInfo.dwPlatformId ) Of
          VER_PLATFORM_WIN32_NT : { Windows NT/2000 }
          Begin
            If ( majorVer <= 4 ) Then
            Result := osWinnt4
            Else
            If ( ( majorVer = 5 ) And ( minorVer= 0 ) ) Then
            Result := osWin2k
            Else
            If ( ( majorVer = 5) And ( minorVer = 1 ) ) Then
            Result := osWinxp
            Else
            Result := OsUnknown;
          End;
          VER_PLATFORM_WIN32_WINDOWS : { Windows 9x/ME }
          Begin        If ( ( majorVer = 4 ) And ( minorVer = 0 ) ) Then
            Result := osWin95
            Else If ( ( majorVer = 4 ) And ( minorVer = 10 ) ) Then 
            Begin
              If ( osVerInfo.szCSDVersion[ 1 ] = 'A' ) Then
              Result := osWin98se
              Else
              Result := osWin98;
            End 
            Else If ( ( majorVer = 4) And ( minorVer = 90 ) ) Then
            Result := OsWinME
            Else
            Result := OsUnknown;      End;
          Else
          Result := OsUnknown;
        End; //end of case
      End Else
      Result := OsUnknown;End;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(strOsType[integer(GetOSVersion)]);
    end;
      

  5.   

    procedure TForm1.GetSysInfo;
    var
        PlatForm:String;
        BuildNumber:Integer;
    begin
        case Win32PlatForm of
            VER_PLATFORM_WIN32_WINDOWS:
            begin
                PlatForm:='Windows 98';
                BuildNumber:=Win32BuildNumber and $0000FFFF;
            end;
            VER_PLATFORM_WIN32_NT:
            begin
                PlatForm:='Windows 2000';
                BuildNumber:=Win32BuildNumber;
            end
            else
            begin
                PlatForm:='Windows';
                BuildNumber:=0;
            end;
        end;
        if (Win32PlatForm = VER_PLATFORM_WIN32_WINDOWS) or (Win32PlatForm = VER_PLATFORM_WIN32_NT) then
        begin
            if Win32CSDVersion = '' then
                lblSystem.Caption:=Format('%s %d.%d(Build %d)',[PlatForm,Win32MajorVersion,Win32MinorVersion,BuildNumber])
            else
                lblSystem.Caption:=Format('%s %d.%d(Build %d:%s)',[PlatForm,Win32MajorVersion,Win32MinorVersion,BuildNumber,Win32CSDVersion]);
        end
        else
            lblSystem.Caption:=Format('%s %d.%d',[PlatForm,Win32MajorVersion,Win32MinorVersion]);
    end;
    适当的添加一点代码,就可以辨别三个系统了!