Windows - descobrindo versao

Top  Previous  Next

Retorna a versão do Windows

===========================

 

function VersaoWindows: string;

var

  verInfo: TOsVersionInfo;

  S      : String;

  I      : Word;

begin

  verInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);

  if GetVersionEx(verInfo) then

  begin

    S := 'Windows ';

    case verInfo.dwPlatformId of

      VER_PLATFORM_WIN32s         : S := S + '95';

      VER_PLATFORM_WIN32_WINDOWS  : S := S + '98 ou 95 OSR2';

      VER_PLATFORM_WIN32_NT       : S := S + 'NT';

    end;

    Result := S + #32 + IntToStr(verInfo.dwMajorVersion) + '.' +

                        IntToStr(verInfo.dwMinorVersion) + '.' + IntToStr(verInfo.dwBuildNumber);

 

    if verInfo.dwMajorVersion = 5 then

      if verInfo.dwMinorVersion = 0 then

        S := 'Windows 2000'

      else

        S := 'Windows XP';

  end

  else Result := 'ERRO';

end;

 

//------------------ MAIS COMPLETO -------------------

 

function  IsWin31 : Boolean; 

var OS : TOSVersionInfo; 

begin 

  ZeroMemory(@OS,SizeOf(OS)); 

  OS.dwOSVersionInfoSize:=SizeOf(OS); 

  GetVersionEx(OS); 

  Result := (Os.dwPlatformId = VER_PLATFORM_WIN32s); 

end

 

function  IsWin95 : Boolean; 

var OS : TOSVersionInfo; 

begin 

  ZeroMemory(@OS,SizeOf(OS)); 

  OS.dwOSVersionInfoSize:=SizeOf(OS); 

  GetVersionEx(OS); 

  result:=(OS.dwMajorVersion >= 4and (OS.dwMinorVersion = 0and (OS.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS); 

end

 

function IsWin95OSR2 : Boolean; 

var 

  OS :TOSVersionInfo; 

begin 

  ZeroMemory(@OS,SizeOf(OS)); 

  OS.dwOSVersionInfoSize:=SizeOf(OS); 

  GetVersionEx(OS); 

  result:=(OS.dwMajorVersion >= 4and (OS.dwMinorVersion = 0and (lo(OS.dwBuildNumber) > 1000and (OS.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS); 

end

 

function  IsWinNT: Boolean; 

var OS :TOSVersionInfo; 

begin 

  ZeroMemory(@OS,SizeOf(OS)); 

  OS.dwOSVersionInfoSize:=SizeOf(OS); 

  GetVersionEx(OS); 

  result:=OS.dwPlatformId=VER_PLATFORM_WIN32_NT; 

end

 

function IsWin98 : Boolean; 

var OS :TOSVersionInfo; 

begin 

  ZeroMemory(@OS,SizeOf(OS)); 

  OS.dwOSVersionInfoSize:=SizeOf(OS); 

  GetVersionEx(OS); 

  result:=(OS.dwMajorVersion >= 4and (OS.dwMinorVersion > 0and (OS.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS); 

end

 

function  IsWin98se : Boolean; 

var OS :TOSVersionInfo; 

begin 

  ZeroMemory(@OS,SizeOf(OS)); 

  OS.dwOSVersionInfoSize:=SizeOf(OS); 

  GetVersionEx(OS); 

  result:=(OS.dwMajorVersion >= 4and (OS.dwMinorVersion > 0and (lo(OS.dwBuildNumber) > 2000and (OS.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS); 

end

 

function IsWin2000 : Boolean; 

var OS :TOSVersionInfo; 

begin 

  ZeroMemory(@OS,SizeOf(OS)); 

  OS.dwOSVersionInfoSize:=SizeOf(OS); 

  GetVersionEx(OS); 

  result := (OS.dwMajorVersion >= 5and (OS.dwPlatformId = VER_PLATFORM_WIN32_NT); 

end

 

function  IsWinXP : Boolean; 

var OS :TOSVersionInfo; 

begin 

  ZeroMemory(@OS,SizeOf(OS)); 

  OS.dwOSVersionInfoSize:=SizeOf(OS); 

  GetVersionEx(OS); 

  result := (OS.dwMajorVersion >= 5and (OS.dwMinorVersion >= 1and (OS.dwPlatformId = VER_PLATFORM_WIN32_NT); 

end

 

 

function IsWinMe : Boolean; 

var OS :TOSVersionInfo; 

begin 

  ZeroMemory(@OS,SizeOf(OS)); 

  OS.dwOSVersionInfoSize:=SizeOf(OS); 

  GetVersionEx(OS); 

  result:=(OS.dwMajorVersion >= 4and (OS.dwMinorVersion >= 90and (OS.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS); 

end

 

 

function GetNTType : String; 

var r : TRegistry; 

    ts : String; 

begin 

 

  Result := '[UNKNOWN]'

 

  if IsWinNT then 

    begin 

      r := TRegistry.Create

      r.RootKey := HKEY_LOCAL_MACHINE; 

      r.OpenKey('SYSTEM\CurrentControlSet\Control\ProductOptions',False); 

      ts := AnsiUpperCase(R.ReadString('ProductType')); 

      r.Free; 

      if (ts = 'WINNT') then 

        begin 

          result := 'Workstation'

          if IsWin2000 then 

            result := 'Professional'

        end 

      else if (ts = 'SERVERNT') then 

        begin 

           result := 'Server'

         end 

      else if (ts = 'LANMANNT') then 

        begin 

          result := 'Advanced Server'

        end

    end

 

end