Author: Ronald Buster Here is how to find out almost everything of windows versions. Answer: 1 2 function IsWin31: Boolean; 3 var 4 OS: TOSVersionInfo; 5 begin 6 ZeroMemory(@OS, SizeOf(OS)); 7 OS.dwOSVersionInfoSize := SizeOf(OS); 8 GetVersionEx(OS); 9 Result := (Os.dwPlatformId = VER_PLATFORM_WIN32s); 10 end; 11 12 function IsWin95: Boolean; 13 var 14 OS: TOSVersionInfo; 15 begin 16 ZeroMemory(@OS, SizeOf(OS)); 17 OS.dwOSVersionInfoSize := SizeOf(OS); 18 GetVersionEx(OS); 19 result := (OS.dwMajorVersion >= 4) and (OS.dwMinorVersion = 0) and 20 (OS.dwPlatformId 21 = VER_PLATFORM_WIN32_WINDOWS); 22 end; 23 24 function IsWin95OSR2: Boolean; 25 var 26 OS: TOSVersionInfo; 27 begin 28 ZeroMemory(@OS, SizeOf(OS)); 29 OS.dwOSVersionInfoSize := SizeOf(OS); 30 GetVersionEx(OS); 31 result := (OS.dwMajorVersion >= 4) and (OS.dwMinorVersion = 0) and 32 (lo(OS.dwBuildNumber) > 1000) and (OS.dwPlatformId = 33 VER_PLATFORM_WIN32_WINDOWS); 34 end; 35 36 function IsWinNT: Boolean; 37 var 38 OS: TOSVersionInfo; 39 begin 40 ZeroMemory(@OS, SizeOf(OS)); 41 OS.dwOSVersionInfoSize := SizeOf(OS); 42 GetVersionEx(OS); 43 result := OS.dwPlatformId = VER_PLATFORM_WIN32_NT; 44 end; 45 46 function IsWin98: Boolean; 47 var 48 OS: TOSVersionInfo; 49 begin 50 ZeroMemory(@OS, SizeOf(OS)); 51 OS.dwOSVersionInfoSize := SizeOf(OS); 52 GetVersionEx(OS); 53 result := (OS.dwMajorVersion >= 4) and (OS.dwMinorVersion > 0) and 54 (OS.dwPlatformId 55 = VER_PLATFORM_WIN32_WINDOWS); 56 end; 57 58 function IsWin98se: Boolean; 59 var 60 OS: TOSVersionInfo; 61 begin 62 ZeroMemory(@OS, SizeOf(OS)); 63 OS.dwOSVersionInfoSize := SizeOf(OS); 64 GetVersionEx(OS); 65 result := (OS.dwMajorVersion >= 4) and (OS.dwMinorVersion > 0) and 66 (lo(OS.dwBuildNumber) > 2000) and (OS.dwPlatformId = 67 VER_PLATFORM_WIN32_WINDOWS); 68 end; 69 70 function IsWin2000: Boolean; 71 var 72 OS: TOSVersionInfo; 73 begin 74 ZeroMemory(@OS, SizeOf(OS)); 75 OS.dwOSVersionInfoSize := SizeOf(OS); 76 GetVersionEx(OS); 77 result := (OS.dwMajorVersion >= 5) and (OS.dwPlatformId = VER_PLATFORM_WIN32_NT); 78 end; 79 80 function IsWinXP: Boolean; 81 var 82 OS: TOSVersionInfo; 83 begin 84 ZeroMemory(@OS, SizeOf(OS)); 85 OS.dwOSVersionInfoSize := SizeOf(OS); 86 GetVersionEx(OS); 87 result := (OS.dwMajorVersion >= 5) and (OS.dwMinorVersion >= 1) and 88 (OS.dwPlatformId 89 = VER_PLATFORM_WIN32_NT); 90 end; 91 92 function IsWinMe: Boolean; 93 var 94 OS: TOSVersionInfo; 95 begin 96 ZeroMemory(@OS, SizeOf(OS)); 97 OS.dwOSVersionInfoSize := SizeOf(OS); 98 GetVersionEx(OS); 99 result := (OS.dwMajorVersion >= 4) and (OS.dwMinorVersion >= 90) and 100 (OS.dwPlatformId 101 = VER_PLATFORM_WIN32_WINDOWS); 102 end; 103 104 function GetNTType: string; 105 var 106 r: TRegistry; 107 ts: string; 108 begin 109 110 Result := '[UNKNOWN]'; 111 112 if IsWinNT then 113 begin 114 r := TRegistry.Create; 115 r.RootKey := HKEY_LOCAL_MACHINE; 116 r.OpenKey('SYSTEM\CurrentControlSet\Control\ProductOptions', False); 117 ts := AnsiUpperCase(R.ReadString('ProductType')); 118 r.Free; 119 if (ts = 'WINNT') then 120 begin 121 result := 'Workstation'; 122 if IsWin2000 then 123 result := 'Professional'; 124 end 125 else if (ts = 'SERVERNT') then 126 begin 127 result := 'Server'; 128 end 129 else if (ts = 'LANMANNT') then 130 begin 131 result := 'Advanced Server'; 132 end; 133 end; 134 135 end;