2015-07-20 8 views
9

जब साथ Windows 10 संस्करण फोन:Windows 10 आरटीएम OSVersion वापस नहीं मैं क्या उम्मीद

Environment.OSVersion.ToString() 

वापसी इस

enter image description here

Windows 8 और 8.1 संस्करण नहीं लौट 6.2 6.3?!

इम का उपयोग कर Windows 10 आरटीएम वी.एस. 2015 (विंडोज़ अद्यतन के साथ अंदरूनी सूत्र से उन्नयन) आर सी और नेट 4.6

अब मैं खिड़कियों के सही संस्करण, किसी भी समाधान प्राप्त करने की आवश्यकता?

+3

चीज़ों की बग को कॉल करते समय सावधान रहें और इसके साथ सभी कैप्स पर जाएं। संभावना है कि आप जिस सिद्ध ढांचे का उपयोग कर रहे हैं वह वास्तव में छोटी नहीं है। – zneak

उत्तर

11

यह नहीं एक बग, यह MSDN में बताया गया है:

Operating System Version

Windows 10 Insider Preview 10.0* 
Windows Server Technical Preview 10.0* 
Windows 8.1 6.3* 

*: अनुप्रयोग जो Windows 8.1 या Windows 10 अंदरूनी पूर्वावलोकन के लिए प्रकट होता गया है। विंडोज 8.1 या विंडोज 10 अंदरूनी पूर्वावलोकन के लिए प्रकट नहीं किए गए एप्लिकेशन विंडोज 8 ओएस संस्करण मान (6.2) लौटाएंगे। विंडोज 8.1 या विंडोज 10 अंदरूनी पूर्वावलोकन के लिए अपने अनुप्रयोगों को प्रकट करने के लिए, Targeting your application for Windows देखें।

वैसे भी आपको विंडोज संस्करण की क्या आवश्यकता है?

+0

सी # में काम नहीं करता .... मैंने गाइड – user3477026

+0

पर्यावरण.ओएसवीरियन.ओस्ट्रिंग() विंडोज 8.1 पर अपडेट 6.2 अपडेट 3 नहीं 6.3 !! – user3477026

+2

तथ्य यह है कि एक एप्लिकेशन आपको विंडोज 8.1 पर "6.2" देता है इसका मतलब है कि ऐप 8.1 के लिए प्रकट नहीं होता है। एमएसडीएन पेज पढ़ें, विशेष रूप से [विंडोज़ के लिए अपने आवेदन को लक्षित करना] (https://msdn.microsoft.com/en-us/library/windows/desktop/dn481241 (v = vs.85) .aspx) लिंक। – CodeCaster

13

इसके बजाय WMI क्वेरी का उपयोग करें, यह संस्करण और संबंधित उत्पाद नाम प्राप्त करने का सबसे विश्वसनीय तरीका है।

 public static KeyValuePair<string, string> GetOSVersionAndCaption() 
     { 
       KeyValuePair<string, string> kvpOSSpecs = new KeyValuePair<string, string>(); 
       ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Caption, Version FROM Win32_OperatingSystem"); 
     try 
     { 

      foreach (var os in searcher.Get()) 
      { 
       var version = os["Version"].ToString(); 
       var productName = os["Caption"].ToString(); 
       kvpOSSpecs = new KeyValuePair<string, string>(productName, version); 
      } 
     } 
     catch { } 

     return kvpOSSpecs; 
    } 
+1

आप विंडोज 10 बनाम विंडोज सर्वर 2016 को अलग करने के लिए उत्पाद टाइप के लिए भी पूछना चाहेंगे।ProductType इनमें से एक होगा: 1: वर्कस्टेशन - विंडोज 10 2: डोमेन नियंत्रक 3: सर्वर - विंडोज सर्वर 2016 –

0

Windows 10 एक नया रजिस्ट्री कुंजी है - आप पूर्व संस्करणों से नहीं 10Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CurrentMajorVersionNumber", Nothing) से का एक परिणाम हो और (सिद्धांत में) होगा।

यह स्टॉपवॉच ऑब्जेक्ट के अनुसार 0 मिलीसेकंड में चलता है, जबकि डब्ल्यूएमआई विधि मेरे लिए कम से कम 30 एमएस लेती है।

+2

_ "यह 0 मिलीसेकंड से कम में चलता है" _ - तो आप कह रहे हैं कि रजिस्ट्री कुंजी रखती है यात्रा का समय यात्रा? – CodeCaster

+0

दरअसल, यह हमेशा मुझे आश्चर्यचकित करता है जब लिया गया समय 0ms के रूप में रिपोर्ट किया जाता है :) –

+0

30 एमएस एक एपीआई के लिए भुगतान करने के लिए बहुत अधिक कीमत की तरह प्रतीत नहीं होता है जिसे आपको केवल एक बार कॉल करने की आवश्यकता होती है और वास्तव में अधिकांश संस्करणों के लिए सही ढंग से काम करता है (विंडोज 2000 से शुरू) विंडोज़ से पहले 10. रजिस्ट्री का उपयोग करने से पहले के संस्करणों के मामले को संभालने की आवश्यकता होती है जो CurrentMajorVersionNumber का समर्थन नहीं करते हैं। यदि आप रजिस्ट्री का उपयोग करते हैं, तो ध्यान रखें कि विंडोज सर्वर 2016 भी CurrentMajorVersionNumber = 10 की रिपोर्ट करता है। उन्हें पहचानने के लिए स्थापना प्रकार की आवश्यकता है। यह हो सकता है: ग्राहक | सर्वर | ... तो आपको 2-3 रजिस्ट्री एक्सेस की आवश्यकता हो सकती है। इसमें 3 एक्स 0ms से अधिक समय लग सकता है :) –

संबंधित मुद्दे