5

このコードを使用して、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 (32bit) は Windows XP - メジャー バージョン 5 であると表示されています。確認したところ、バージョン 6.2 のはずです (windows8 の notepad.exe によると)。これはバグですか、それとも何か問題がありますか? ところで。私のWindows 8はup2dateです。

何か案は?

編集:スクリーンショット ゲトス

4

2 に答える 2

11

この動作の理由は、XP互換モードであり、Delphi7IDEは互換モードで実行されていました。

于 2012-05-11T19:40:37.293 に答える