type
  TOSVersion = (osUnknown, os95, os95OSR2, os98, os98SE, osNT3, osNT4, os2K, osME,osXP);  Function  IsNT(var OS:string): boolean;//判断是否是NT系统
  Function  GetOS :TOSVersion;           //获得操作系统//获取操作系统
function GetOS;
var
  OS :TOSVersionInfo;
begin
  ZeroMemory(@OS,SizeOf(OS));
  OS.dwOSVersionInfoSize:=SizeOf(OS);
  GetVersionEx(OS);
  Result:=osUnknown;
  if OS.dwPlatformId=VER_PLATFORM_WIN32_NT then
    begin
      case OS.dwMajorVersion of
        3: Result:=osNT3;
        4: Result:=osNT4;
        5: begin
             if OS.dwMinorVersion>=1 then
               Result:=osXP
             else
               Result:=os2K;
           end;
      end;
    end
  else
    begin
      if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=0) then
        begin
          Result:=os95;
          if (Trim(OS.szCSDVersion)='B') then
            Result:=os95OSR2;
        end
      else
        if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=10) then
          begin
            Result:=os98;
            if (Trim(OS.szCSDVersion)='A') then
              Result:=os98SE;
          end
        else
          if (OS.dwMajorVersion=4) and (OS.dwMinorVersion=90) then
            Result:=osME;
    end;
end;//判断是否时NT系统
function IsNT(var OS:string): boolean;
var
  OSVI :TOSVersion;
begin
  OS:='不知道';
  OSVI:=GetOs;
  if OSVI=osNT3
    then OS:='Window NT3';
  if OSVI=OSNT4
    then OS:='Window NT4';
  if OSVI=os2K
    then OS:='Winodw 2000';
  if OSVI=os95
    then OS:='Window 95';
  if OSVI=os95OSR2
    then OS:='Window 97';
  if OSVI=os98
    then OS:='Winodw 98';
  if OSVI=os98SE
    then OS:='Winodw 98SE';
  if OSVI=osME
    then OS:='Winodw ME';
  Result:=GetOS in [osNT3,osNT4,os2K,osXP];
end; 

解决方案 »

  1.   

    参照判定系统是98或者NT的实例,自己修改修改: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 NT'; 
    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;
      

  2.   

    楼上写的好像有点多
    function getVersion():string;
     
    var   VersionInfo: TOSVersionInfo;
          sys_flag:string;
    begin VersionInfo.dwOSVersionInfoSize := Sizeof(TOSVersionInfo);
    if  GetVersionEx(VersionInfo) then
    begin
        Case VersionInfo.dwPlatformID of
         VER_PLATFORM_WIN32S: sys_flag:='win32';
         VER_PLATFORM_WIN32_WINDOWS:sys_flag:='win95';
         VER_PLATFORM_WIN32_NT:sys_flag:='winnt';    end;
        result:=sys_flag;
     end
     else 
       result:='fail';
    end;