2012-05-11 22 views
5

我使用此代碼來檢測PC上的WindowsVersion。Windows 8 Consumer Preview錯誤的主要版本?

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消費者預覽版構建8250(32位)是Windows XP中 - 大版本5.我檢查,它應該(根據上的Windows8的notepad.exe)是6.2版本是這樣一個錯誤還是有問題?順便說一句。我的Windows 8是up2date。

任何想法?

編輯:截圖 GETOS

+4

你試過調試嗎?檢查一下你在'osVerInfo'中找回的內容並追蹤它,看看最終結果如何。這會讓你知道發生了什麼。 –

+0

我翻看了整個osVerInfo並進行了調試。它說大版本5. –

+7

也許你的應用程序在XP兼容模式下運行? –

回答

11

這樣做的原因行爲是XP兼容模式,Delphi 7中IDE物在兼容模式運行。

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中的registry-key'Version'中讀取它。 問候, 詢問

相關問題