2017-03-21 15 views
8

दृश्य स्टूडियो सिस्टम रजिस्ट्री "प्रदूषण" के बजाय एक निजी रजिस्ट्री हाइव का उपयोग करता है - आम तौर पर इस तरह कहीं पाया:पहुँच विजुअल स्टूडियो 2017 के निजी रजिस्ट्री हाइव

C:\Users\Abx\AppData\Local\Microsoft\VisualStudio\15.0_4b0ba1c0\privateregistry.bin

[क्रम स्थापित एक्सटेंशन हम की जरूरत है निर्धारित करने के लिए निम्न कुंजी को देखने के लिए: Software\Microsoft\VisualStudio\15.0_4b0ba1c0\ExtensionManager\EnabledExtensions]

सी # में कुंजी द्वारा इस फ़ाइल को लोड और एक्सेस करने का सबसे आसान तरीका क्या है?

+1

मुझे यकीन नहीं है कि कोई प्रबंधित समाधान है या नहीं। आपको P/Invoke [RegLoadAppKey] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms724886 (v = vs.85) .aspx) हो सकता है। कम से कम [इस पृष्ठ] पर "बदलें: रजिस्ट्री प्रभाव को कम करें" अनुभाग के अनुसार (https://docs.microsoft.com/en-us/visualstudio/extensibility/breaking-changes-2017)। – itsme86

+0

उस जानकारी और "विजुअल स्टूडियो 2017 एक्स्टेंसिबिलिटी में परिवर्तन" के लिंक के लिए धन्यवाद। मुझे लगता है कि आप सही हैं: ऐसा कोई प्रबंधित समाधान प्रतीत नहीं होता है - हालांकि RegLoadAppKey विधि अच्छी तरह से काम करती है। –

उत्तर

10

मैन्युअल की समीक्षा करने के लिए, आप निम्न कार्य करके privateregistry.bin फ़ाइल को लोड करने regedit.exe अनुप्रयोग का उपयोग कर सकते हैं:

  1. लॉन्च regedit.exe
  2. बाईं में कंप्यूटर \ HKEY_LOCAL_MACHINE नोड का चयन करें -हेड फलक
  3. फ़ाइल का चयन करें | हाइव ... मेनू आइटम लोड करें, और privateregistry.bin
  4. एक प्रमुख नाम लिए संकेत देने पर लोड, बस "VSRegHive"
  5. यह HKLM नोड के अंतर्गत एक VSRegHive में डेटा लोड होगा की तरह कुछ में टाइप
  6. जब एक्सप्लोर करना समाप्त हो जाए, तो VSRegHive का चयन करना सुनिश्चित करें और फ़ाइल का चयन करें। RegEdit.exe उपयोगिता से बाहर निकलने से पहले, हाइव अनलोड करें ... अन्यथा वीएस शुरू करने में विफल रहेगा। Regedit में लोड किए गए छिद्र को बनाए रखने से लॉक की तरह बनाता है जो DevEnv.exe को लॉन्च करने से रोकता है।

प्रोग्रामेटिक रूप से कुंजी का उपयोग करने के लिए RegLoadAppKey वास्तव में आपकी सबसे अच्छी शर्त है।

निष्ठा से, एड डोर

0

मैं सिर्फ एक समान समस्या थी और this पाया अतः पोस्टिंग। मेरे अनुभव में आपको अपनी परियोजना के लिए x86 कॉन्फ़िगरेशन का उपयोग करना होगा या अन्यथा आपको अपवाद मिलेगा। मैंने कोड को आपकी समस्या में अनुकूलित किया है।

ExternalSettingsManager ext = ExternalSettingsManager.CreateForApplication(@"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe"); 
SettingsStore store = ext.GetReadOnlySettingsStore(SettingsScope.UserSettings); 
var propNames = store.GetPropertyNames(@"ExtensionManager\EnabledExtensions"); 
store.GetString(...) 

उपरोक्त विधि के अलावा, यह "CreateForApplication" के बाद रजिस्ट्री पहुँच के लिए "सामान्य" नेट तरीकों का उपयोग करने के लिए संभव हो रहा है बुलाया गया है। बस इस तरह कुछ उपयोग करें:

Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\VisualStudio\15.0\ExtensionManager\EnabledExtensions") 
संबंधित मुद्दे