2009-03-24 4 views
6

का उपयोग करते समय सुरक्षा अपवाद। मैं एक ऐसे अनुप्रयोग को विकसित कर रहा हूं जिसे रजिस्ट्री को लिखने की आवश्यकता है। यह एक्सपी पर ठीक काम करता है, लेकिन जब मैं विजुअल स्टूडियो से Vista पर इसे चलाता हूं, तो मुझे एक सुरक्षा अपवाद मिलता है:Registry.LocalMachine.OpenSubKey

रजिस्ट्री.लोकलमाचिन.ऑपेनसुबेकी ("सॉफ़्टवेयर", सत्य);

मैं रजिस्ट्री की उस शाखा में एक नई कुंजी लिखने की कोशिश कर रहा हूं।

ऐसा करने का सही तरीका क्या है, सबसे पहले मैं अपने आवेदन को Vista पर वीएस से चला सकता हूं, और दूसरी बात यह है कि मेरे उपयोगकर्ता Vista पर चल रही समस्याओं में भाग नहीं लेते हैं।

धन्यवाद ...

उत्तर

10

XP और Vista दोनों पर आपको स्थानीयमाचिन के तहत एक नई कुंजी लिखने के लिए व्यवस्थापकीय अधिकारों की आवश्यकता है।

आपको XP पर यह काम मिल जाएगा और अलग-अलग खाता डिफ़ॉल्ट के कारण Vista पर विफल हो जाएगा।

त्वरित और गंदे समाधान यह सुनिश्चित करना है कि आपका आवेदन दोनों मामलों में व्यवस्थापक अधिकारों के साथ चलता है, हालांकि Vista में यह फेंक दिया जाता है।

बेहतर समाधान चीजों को फिर से डिजाइन करना होगा - क्या नई उप कुंजी आपके इंस्टॉलर द्वारा लिखी जा सकती है (जो व्यवस्थापक अधिकारों के साथ चलता है), या क्या आप अपनी जानकारी कहीं और स्टोर कर सकते हैं?

+0

हाँ, यह मेरे लिए एक अच्छा समाधान है - मुझे लगता है कि मैं इस दौरान सेट कर देंगे के रूप में यह एक ऐप्लिकेशन चौड़ा सेटिंग स्थापित करें। –

7

स्टैंडर्ड उपयोगकर्ताओं, और व्यवस्थापक के Vista पर यूएसी के साथ चल रहा है, स्थानीय मशीन रजिस्ट्री कुंजी लिखने की अनुमति नहीं है। यदि आप मानक उपयोगकर्ता के रूप में भागते हैं तो यह XP पर भी विफल हो जाएगा।

आपके विकल्प हैं:

  • Registry.CurrentUser उपयोग के बजाय, अगर सेटिंग प्रति-उपयोगकर्ता है।
  • व्यवस्थापक
  • रूप में अपने अनुप्रयोग चलाने के लिए कुंजी तो किसी को भी लिख सकते हैं पर एसीएल ढीला - जो निश्चित रूप से सिफारिश नहीं है, बॉक्स कुंजी टोस्ट कर सकते हैं पर किसी भी मैलवेयर के बाद से।
2

यदि आप व्यवस्थापक के रूप में चल रहे हैं तो आप केवल उस कुंजी को लिख सकते हैं। तो आपको व्यवस्थापक के रूप में वीएस चलाने की आवश्यकता होगी और आपके उपयोगकर्ताओं को एप्लिकेशन को व्यवस्थापक के रूप में चलाने की आवश्यकता होगी।

मेरा सुझाव यह देखना होगा कि आपको वास्तव में स्थानीयमाचिन को लिखने की आवश्यकता है या नहीं। आप व्यवस्थापक अधिकारों के बिना CurrentUser को लिख सकते हैं।

1

मुझे लगता है कि यह "XP के अंतर्गत काम करता है" क्योंकि हर कोई इसे XP के अंतर्गत व्यवस्थापक के रूप में चलाता है?

  • आप दरकिनार (सेटअप के दौरान कुंजी बनाने या CurrrentUser या कुछ और के तहत एक कुंजी का उपयोग करें) की कोशिश कर सकते हो जाएगा।

  • आप सेटअप के दौरान अपने आवेदन का विशेषाधिकार प्रदान कर सकते हैं। मुझे डर है कि मैं यह कैसे करने के बारे में विवरण पर थोड़ा सा छोटा हूं।

0

उपयोग Registry.CurrentUser

+0

प्रश्न स्पष्ट रूप से स्थानीयमाचिन की आवश्यकता है – JohnZaj

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