2010-04-19 9 views
29

मैं बहुत हाल ही में अपने आप को c++ और win32 प्रोग्रामिंग vb.net सीखने के बाद पढ़ाने के लिए तय कर लिया है, और मैं एक बहुत ही सरल सवाल है:मैं अपने कंप्यूटर पर स्थापित विंडोज एसडीके के संस्करण को कैसे निर्धारित कर सकता हूं?

मैं कैसे निर्धारित कर सकते हैं अपने कंप्यूटर पर Windows SDK का कौन सा संस्करण स्थापित किया गया है?

मैं पूछ रहा हूं कि अगर मैं c++ के साथ खेलना शुरू कर दूं तो मैं नवीनतम संस्करण स्थापित कर सकता हूं। मैं अपने IDE के रूप में Microsoft Visual Studio 2008 SP1 का उपयोग कर रहा हूं।

उत्तर

31
कम से कम

अंग्रेजी स्थान पर:

dir "%ProgramFiles%\Microsoft SDKs\Windows" 

काम करना चाहिए। यह काफी संभावना है कि कई संस्करण स्थापित होंगे, जो कि एक बिल्ड के लिए सही है केवल उस परियोजना द्वारा निर्दिष्ट किया जा सकता है।

+20

+1 - 64-बिट मशीनों पर "% प्रोग्रामफाइल (x86)% \ Microsoft SDKs \ Windows" को भी जांचना याद रखें। – user200783

+0

@ पॉलबकर: यह आवश्यक हो सकता है या नहीं भी हो सकता है, एसडीके के नए संस्करण दोनों में स्थापित होने लगते हैं। – Richard

+0

यदि मेरे पास v8.1 फ़ोल्डर है लेकिन यह केवल ~ 2 एमबी है 8.1 फ्रेमवर्क स्थापित नहीं है? – user145400

18

विंडोज एसडीके के वर्तमान संस्करण निम्न रजिस्ट्री कुंजी की CurrentVersion मूल्य में संग्रहीत है:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows CurrentVersion

और यह इस PowerShell एक लाइनर का प्रयोग कर प्राप्त किया जा सकता है:

$(Get-Item "hklm:\SOFTWARE\Microsoft\Microsoft SDKs\Windows").GetValue("CurrentVersion") 

enter image description here

17

यदि आपको संकलन करते समय निर्धारित करना है, तो विंडोज एसडीके का किस संस्करण का उपयोग किया जा रहा है, तो आप VER_PRODUCTBUILD मैक्रो का उपयोग कर सकते हैं, जिसे ntverp.h में परिभाषित किया गया है। उदाहरण के लिए:

#include <ntverp.h> 
#if VER_PRODUCTBUILD > 9600 
// Windows 10+ SDK code goes here 
#else 
// Windows 8.1- SDK code goes here 
#endif 

ज्यादातर मामलों में यह आवश्यक नहीं होना चाहिए क्योंकि किसी उत्पाद को किसी विशेष प्लेटफ़ॉर्म एसडीके के साथ बनाने के लिए डिज़ाइन किया जाना चाहिए। लेकिन कुछ बड़े उत्पादों के लिए कई प्लेटफार्म एसडीके का समर्थन करना वांछित हो सकता है। एक से दूसरे में माइग्रेट करते समय यह विशेष रूप से उपयोगी हो सकता है। यदि हेडर फ़ाइल में कोई बग है (जैसे कि bthledef.h के विंडोज 8.1 एसडीके संस्करण में बोगस "#pragma पॉप") तो आपको इस बग को हल करने की आवश्यकता हो सकती है, लेकिन विंडोज 10 एसडीके का उपयोग करते समय वर्कअराउंड शामिल नहीं है या ऊँचा।

+0

मुझे संदेह है कि यह ओपी चाहता था, और यह वही है जो मैं चाहता था। धन्यवाद! मैंने अभी आपको एक वोट दिया है। –