我已经找到方法了,结贴!方法如下: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 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 (OS.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS); 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 (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 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 (OS.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS); //and (lo(OS.dwBuildNumber) > 2000) removed because of Will never find SE 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 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 := '[NT Variant]'; if IsWinNT then begin r := TRegistry.Create; r.RootKey := HKEY_LOCAL_MACHINE; r.OpenKeyReadOnly('SYSTEM\CurrentControlSet\Control\ProductOptions'); ts := AnsiUpperCase(R.ReadString('ProductType')); r.Free; if (ts = 'WINNT') then begin result := 'Windows NT Workstation'; if IsWin2000 then result := 'Windows 2000 Professional'; end else if (ts = 'SERVERNT') then begin result := 'Server'; end else if (ts = 'LANMANNT') then begin result := 'Windows 2000 Advanced Server'; end; end;end; procedure OS_INFO; Begin if IsWinXP = TRUE then begin GETOS := 'Windows XP'; GETOSMajor := 'Windows NTx'; end else if IsWinMe = TRUE then begin GETOS := 'Windows ME'; GETOSMajor := 'Windows 9x'; end else if IsWin98se = TRUE then begin GETOS := 'Windows 98SE'; GETOSMajor := 'Windows 9x'; end else if IsWin98 = TRUE then begin GETOS := 'Windows 98'; GETOSMajor := 'Windows 9x'; end else if IsWin95OSR2 = TRUE then begin GETOS := 'Windows 95B'; GETOSMajor := 'Windows 9x'; end else if IsWin95 = TRUE then begin GETOS := 'Windows 95A'; GETOSMajor := 'Windows 9x'; end else if IsWinNT = TRUE then begin GETOSMajor := 'Windows NTx'; GETOS := GetNTType; end; end;
var OS : TOSVersionInfo;
begin
ZeroMemory(@OS,SizeOf(OS));
OS.dwOSVersionInfoSize:=SizeOf(OS);
GetVersionEx(OS);
Result := (Os.dwPlatformId = VER_PLATFORM_WIN32s);
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
(OS.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS);
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
(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 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
(OS.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS);
//and (lo(OS.dwBuildNumber) > 2000) removed because of Will never find SE
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 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 := '[NT Variant]'; if IsWinNT then
begin
r := TRegistry.Create;
r.RootKey := HKEY_LOCAL_MACHINE;
r.OpenKeyReadOnly('SYSTEM\CurrentControlSet\Control\ProductOptions');
ts := AnsiUpperCase(R.ReadString('ProductType'));
r.Free;
if (ts = 'WINNT') then
begin
result := 'Windows NT Workstation';
if IsWin2000 then
result := 'Windows 2000 Professional';
end
else if (ts = 'SERVERNT') then
begin
result := 'Server';
end
else if (ts = 'LANMANNT') then
begin
result := 'Windows 2000 Advanced Server';
end;
end;end;
procedure OS_INFO;
Begin
if IsWinXP = TRUE then begin
GETOS := 'Windows XP';
GETOSMajor := 'Windows NTx';
end
else
if IsWinMe = TRUE then begin
GETOS := 'Windows ME';
GETOSMajor := 'Windows 9x';
end
else
if IsWin98se = TRUE then begin
GETOS := 'Windows 98SE';
GETOSMajor := 'Windows 9x';
end
else
if IsWin98 = TRUE then begin
GETOS := 'Windows 98';
GETOSMajor := 'Windows 9x';
end
else
if IsWin95OSR2 = TRUE then begin
GETOS := 'Windows 95B';
GETOSMajor := 'Windows 9x';
end
else
if IsWin95 = TRUE then begin
GETOS := 'Windows 95A';
GETOSMajor := 'Windows 9x';
end
else
if IsWinNT = TRUE then begin
GETOSMajor := 'Windows NTx';
GETOS := GetNTType;
end;
end;