【问题标题】:Windows 8 Consumer Preview Wrong Major Version?Windows 8 Consumer Preview 主版本错误?
【发布时间】:2012-05-11 19:14:35
【问题描述】:

我正在使用此代码检测 PC 上的 Windows 版本。

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 已更新。

有什么想法吗?

编辑:截图

【问题讨论】:

  • 你试过调试吗?检查以查看您在 osVerInfo 中返回的内容,并通过它进行跟踪以了解您最终得到该结果的方式。这会让你知道发生了什么。
  • 也许你的应用在 XP 兼容模式下运行?
  • Windows 8 下的GetVersionEx function works fine,我刚刚在 Windows 8 Developer Preview 下测试了一个 Delphi XE2 应用程序,GetVersionEx 返回 6.2,@AntonioBakula 也说可能你正在执行你的应用程序以兼容 XP模式。
  • 如果@Antonio 将其作为答案发布并且您会接受它,那将是公平的;-)
  • 作为答案发布,我不确定这是一个原因,所以我发表了评论:)

标签: delphi delphi-7 windows-8


【解决方案1】:

出现这种现象的原因是 XP 兼容模式,Delphi 7 IDE 是在兼容模式下运行的。

【讨论】:

    【解决方案2】:

    对于 Windows 8.0,版本 6.2 是正确的 - 也是内部版本号。 使用 Windows 8.1,您也可以获得 6.2 版。但是现在版本号是 6.3 Build 9600。你可以在系统信息中看到它。 GetVersionEx 只允许 Win32MinorVersion 使用 0,1,2。 如果您需要此信息,您可以从 HKCU\Software\Microsoft\Internet Explorer\Main\WindowsSearch 中的注册表项“版本”中读取它。 此致, 问

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多