Title: Windows detection routines
Question: Here is how to find out almost everything of windows versions.
regards
Ronald
Answer:
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 = 4) and (OS.dwMinorVersion = 0) and (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 = 4) and (OS.dwMinorVersion = 0) and (lo(OS.dwBuildNumber) 1000) and (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 = 4) and (OS.dwMinorVersion 0) and (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 = 4) and (OS.dwMinorVersion 0) and (lo(OS.dwBuildNumber) 2000) and (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 = 5) and (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 = 5) and (OS.dwMinorVersion = 1) and (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 = 4) and (OS.dwMinorVersion = 90) and (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;