2012-05-11 15 views
5

Estoy usando este código para detectar WindowsVersion en una PC.Windows 8 Consumer Preview Wrong Major Version?

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; 

Por alguna razón se dice que Windows8 Consumer Preview Build 8250 (32 bits) es Windows XP - Versión 5. Mayor he comprobado y se supone que debe ser de la versión 6.2 (de acuerdo con el Bloc de notas en Windows8) ¿Es esta una error o es algo malo? por cierto. mi Windows 8 es up2date.

¿Alguna idea?

EDITAR: Captura de pantalla GETOS

+4

¿Ha intentado depurarlo? Compruebe para ver qué obtiene en 'osVerInfo' y rastree a través de él para ver cómo termina con ese resultado. Eso te dará una idea de lo que está pasando. –

+0

Revisé todo el osVerInfo y lo depuré. Dice Major Version 5. –

+7

¿quizás su aplicación se está ejecutando bajo el modo de compatibilidad de XP? –

Respuesta

11

La razón de este comportamiento es el modo de compatibilidad de XP, Delphi 7 IDE se ejecuta en modo de compatibilidad.

1

Para Windows 8.0, la versión 6.2 es correcta, también es el Número de compilación. Con Windows 8.1, también obtiene la versión 6.2. Pero ahora el Número de versión es 6.3 Build 9600. Puede verlo en la información del sistema. GetVersionEx permite solo 0,1,2 para Win32MinorVersion. Si necesita esta información, puede leerla desde la clave de registro 'Versión' en HKCU \ Software \ Microsoft \ Internet Explorer \ Main \ WindowsSearch. Saludos cordiales, pregunta

Cuestiones relacionadas