2012-05-11 7 views
5

私はこのコードを使用して、PC上のWindowsVersionを検出しています。私がチェックし、(windows8上のメモ帳に応じて)バージョン6.2ことになっている5.メジャーバージョンこのAは、 - それはWindows8コンシューマープレビュー8250(32ビット)を構築することを述べているいくつかの理由 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; 

は、Windows XPでバグか何か間違っていますか? btw。私のWindows 8はup2dateです。

すべてのアイデア?

EDIT:スクリーンショット GETOS

+4

デバッグを試しましたか?あなたが 'osVerInfo'に戻ったものを確認し、その結果をどのようにして終わるかを見るためにそれをトレースします。それはあなたに何が起こっているのかを知らせるでしょう。 –

+0

私はosVerInfo全体を調べ、それをデバッグしました。それはメジャーバージョン5と言います。 –

+7

あなたのアプリはXP互換モードで動作していますか? –

答えて

11

この挙動の理由は、XP互換モードで、デルファイ7 IDEは、互換モードで動作していました。

1

Windows 8.0の場合、バージョン6.2が正しいです - ビルド番号。 Windows 8.1では、バージョン6.2も手に入ります。しかし、バージョン番号ist 6.3 Build 9600になりました。これはsystem-infoで見ることができます。 GetVersionExでは、Win32MinorVersionに0,1,2しか使用できません。 この情報が必要な場合は、HKCU \ Software \ Microsoft \ Internet Explorer \ Main \ WindowsSearchのレジストリキー 'Version'から読み取ることができます。 よろしくお願いします。 質問

関連する問題