2012-05-11 9 views
5

मैं एक पीसी पर WindowsVersion का पता लगाने के लिए इस कोड का उपयोग कर रहा हूँ। मेजर संस्करण 5. मैं जाँच की और यह (windows8 पर notepad.exe के अनुसार) संस्करण 6.2 होना चाहिए था कि यह एक है -विंडोज 8 उपभोक्ता पूर्वावलोकन गलत मेजर संस्करण?

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 बिल्ड 8250 (32 बिट) के लिए Windows XP है बग या कुछ गलत है? btw। मेरा विंडोज 8 up2date है।

कोई विचार?

संपादित करें: स्क्रीनशॉट GETOS

+4

क्या आपने इसे डिबग करने का प्रयास किया है? यह देखने के लिए जांचें कि आप 'osVerInfo' में वापस क्या प्राप्त करते हैं और यह देखने के लिए कि आप उस परिणाम के साथ कैसे समाप्त होते हैं, इसके माध्यम से पता लगाएं। इससे आपको पता चल जाएगा कि क्या हो रहा है। –

+0

मैंने पूरे osVerInfo को देखा और इसे डीबग किया। यह मेजर वर्जन 5. –

+7

कहता है कि आपका ऐप एक्सपी संगतता मोड के तहत चल रहा है? –

उत्तर

11

इस व्यवहार के लिए कारण XP संगतता मोड है, डेल्फी 7 आईडीई संगतता मोड के तहत चल रहा था।

1

विंडोज 8.0 के लिए संस्करण 6.2 सही है - बिल्ड-नंबर भी। विंडोज 8.1 के साथ आपको संस्करण 6.2 भी मिलता है। लेकिन अब संस्करण-संख्या आईएसटी 6.3 बिल्ड 9600 है। आप इसे सिस्टम-सूचना में देख सकते हैं। GetVersionEx Win32MinorVersion के लिए केवल 0,1,2 की अनुमति देता है। यदि आपको यह जानकारी चाहिए, तो आप इसे HKCU \ Software \ Microsoft \ Internet Explorer \ Main \ WindowsSearch में रजिस्ट्री-कुंजी 'संस्करण' से पढ़ सकते हैं। सर्वश्रेष्ठ संबंध,