私はこのコードを使用して、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:スクリーンショット
デバッグを試しましたか?あなたが 'osVerInfo'に戻ったものを確認し、その結果をどのようにして終わるかを見るためにそれをトレースします。それはあなたに何が起こっているのかを知らせるでしょう。 –
私はosVerInfo全体を調べ、それをデバッグしました。それはメジャーバージョン5と言います。 –
あなたのアプリはXP互換モードで動作していますか? –