2010-04-28 9 views
12

मैं कुछ रजिस्ट्री कुंजियों को संशोधित करने के लिए एक त्वरित ऐप लिखने की कोशिश कर रहा हूं। जब मैं RegEdit के माध्यम से ब्राउज़ कर रहा हूं, तो मैं बिना किसी समस्या के कुंजी को संशोधित और हटा सकता हूं।DeleteSubKey UnauthorizedAccessException

लेकिन जब मैं RegistryKey.DeleteSubKey() का उपयोग करने का प्रयास करता हूं तो यह UnauthorizedAccessException फेंकता है।

क्या ऐसा करने के लिए विशेषाधिकार प्राप्त करने का कोई तरीका है? साथ ही, यदि मेरे उपयोगकर्ता खाते में स्पष्ट रूप से परिवर्तन करने के लिए पहुंच है तो समस्या क्यों होगी?

संपादित करें:

यहाँ कुछ कोड

RegistryKey reg; 

try 
{ 
    reg = Registry.CurrentUser.OpenSubKey(BaseKey); 
    reg.DeleteSubKey("{" + Item.Guid.ToString() + "}"); 
} 
catch 
{ 
    return false; 
} 
+0

Winform या वेब अनुप्रयोग? – curtisk

+1

और कॉल करने से पहले कुंजी को खोलने से पहले कैसे खोल रहे हैं? क्या आप deletesubkey को कॉल करने से पहले कोड की कुछ पंक्तियां दिखा सकते हैं? – curtisk

+0

यदि आपके पास ओपन हैंडल (जैसा कि कर्किस्क सुझाया गया है) के रूप में उप-कुंजी को हटाने का प्रयास करते समय आपको इनकार कर दिया जा सकता है, या संभवतः यदि कुंजी मानों से खाली नहीं है ... – ewall

उत्तर

36

इस बजाय प्रयास करें/शुरू में पढ़ने के रूप में यह खोलते हैं, लिखने के बजाय केवल पढ़ने के लिए है:

RegistryKey reg; 

try 
{ 
    reg = Registry.CurrentUser.OpenSubKey(BaseKey, true); //<--over here! 
    reg.DeleteSubKey("{" + Item.Guid.ToString() + "}"); 
} 
catch 
{ 
    return false; 
} 
+2

* माथे पर भारी धुआं * - धन्यवाद! –

+1

मैं इसे हर बार करना भूल जाता हूं। कॉम्पैक्ट फ्रेमवर्क उपयोगकर्ताओं के लिए –

+1

, कोशिश करें: ** reg = Registry.CurrentUser.OpenSubKey (@ "\", true); ** –

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