2011-09-09 9 views
5

तो मैं REGEDIT मेरे कार्य केंद्र पर रजिस्ट्री के लिए निम्न जोड़ने के लिए उपयोग नहीं मिल सकता है:मैं एक रजिस्ट्री कुंजी जोड़ा है, लेकिन मैं इसे प्रोग्राम के रूप में

HKLM \ Software \ foo \ बार

बार एके/v है "wtf"/"idk" की जोड़ी। मैंने सत्यापित किया कि इन परिवर्तनों ने regedit को बंद करके इसे फिर से खोलकर "लिया"। अरे, वे अभी भी वहाँ हैं! प्रफुल्लित।

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Foo\Bar"); 

if (key != null) 
{ 
    var = key.GetValue("wtf").ToString(); 
} 

समस्या यह है कि कुंजी शून्य है।

कब। । ।

Registry.LocalMachine.OpenSubKey("Software").GetSubKeyNames() 

कहा जाता है, Foo हालांकि कई SubKeyNames के बीच दिखाई नहीं देता है।

तो, मुझे स्पष्ट रूप से कुछ बेवकूफ याद आ रही है। मैं विशेष रूप से क्या याद कर रहा हूँ?

उत्तर

10

यदि आप Windows बिट के 64 बिट संस्करण पर 32 बिट प्रक्रिया चला रहे हैं तो 32 बिट प्रक्रिया (आपका परीक्षण एप्लिकेशन) 64 बिट regedit का उपयोग करके बनाई गई कुंजियों को हमेशा देख नहीं पा रहा है।

अपने आवेदन को 64 बिट के रूप में चलाने का प्रयास करें या HKLM\SOFTWARE\Wow6432Node\Foo\Bar पथ का उपयोग करके कुंजी खोलने के लिए regedit का उपयोग करें।

आप एमएसडीएन पर 32-bit and 64-bit application data in the registry के बारे में अधिक पढ़ सकते हैं।

+0

आप और रीइज़बोश सही हैं; यह एक x64 ओएस है लेकिन प्रोग्राम 32 बिट ऐप के रूप में चल रहा है, और यह Wow6432Node से पढ़ रहा था। – peacedog

4

एक x64 मुद्दा हो सकता है? किसी x86 प्रक्रिया में रजिस्ट्री से पढ़ने पर आपको सॉफ़्टवेयर \ Wow6432node पर रीडायरेक्ट किया जाता है।

1

इसे केवल पढ़ने के लिए इसे खोलने का प्रयास करें Registry.LocalMachine.OpenSubKey("Software", false).GetSubKeyNames() शायद आप केवल वे ही प्राप्त कर रहे हैं जिन्हें आप लिखने में सक्षम हैं।

+0

मैंने इस सवाल में इसका जिक्र नहीं किया लेकिन अनुमति 5x5 थी; मैं कुंजी को लिख सकता था। – peacedog

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