我正在使用此代码检测PC上的WindowsVersion。
function GetOS: string;
var
osVerInfo: TOSVersionInfo;
majorVer, minorVer: Integer;
begin
Result := 'Unknown';
osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if GetVersionEx(osVerInfo) then
begin
majorVer := osVerInfo.dwMajorVersion;
minorVer := osVerInfo.dwMinorVersion;
case osVerInfo.dwPlatformId of
VER_PLATFORM_WIN32_NT: {Mirosoft Windows NT/2000 }
begin
if majorVer <= 4 then
Result := 'Win NT'
else if (majorVer = 5) and (minorVer = 0) then
Result := 'Win 2k'
else if (majorVer = 5) and (minorVer = 1) then
Result := 'Win XP'
else if (majorVer = 6) and (minorVer = 0) then
Result := 'Win Vista'
else if (majorVer = 6) and (minorVer = 1) then
Result := 'Win 7'
else if (majorVer = 6) and (minorVer = 2) then
Result := 'Win 8'
end;
VER_PLATFORM_WIN32_WINDOWS: { Windows 9x/ME }
begin
if (majorVer = 4) and (minorVer = 0) then
Result := 'Win 95'
else if (majorVer = 4) and (minorVer = 10) then
begin
if osVerInfo.szCSDVersion[1] = 'A' then
Result := 'Win 98SE'
else
Result := 'Win 98';
end
else if (majorVer = 4) and (minorVer = 90) then
Result := 'Win ME'
end;
end;
end;
end;
出于某种原因,它说Windows8 Consumer Preview Build 8250(32位)是Windows XP - 主要版本5.我检查了它应该是版本6.2(根据windows8上的notepad.exe)这是一个错误还是某种东西错误?顺便说一句。我的Windows 8是up2date。
任何想法?
编辑:ScreenShot
答案 0 :(得分:11)
此行为的原因是XP兼容模式,Delphi 7 IDE在兼容模式下运行。
答案 1 :(得分:1)
对于Windows 8.0,版本6.2是正确的 - 也是Build-Number。 使用Windows 8.1,您也可以获得6.2版本。但现在版本号为6.3 Build 9600.您可以在system-info中看到它。 GetVersionEx仅允许Win32MinorVersion为0,1,2。 如果您需要此信息,可以在HKCU \ Software \ Microsoft \ Internet Explorer \ Main \ WindowsSearch中的注册表项“版本”中阅读。 最好的祝福, 问