2009-08-12 13 views
27

मैं Windows रजिस्ट्री का उपयोग करने के इस प्रयास से वापस एक अशक्त मिलती है:Registry.LocalMachine.OpenSubKey() रिटर्न अशक्त

using (RegistryKey registry = Registry.LocalMachine.OpenSubKey(keyPath)) 

मुख्यपथ SOFTWARE\\TestKey

कुंजी रजिस्ट्री में है, तो क्यों है यह स्थानीय मशीन हाइव के तहत नहीं ढूंढ रहा है?

+1

आप ठीक ढंग से मुख्यपथ से बचने कर रहे हैं? क्या यह "सॉफ़्टवेयर \\ टेस्टकी" है, और "सॉफ़्टवेयर \ टेस्टकी" नहीं है? – Michael

+0

हाँ, मैंने इसे गलत पोस्ट किया है। यह वास्तव में \\ – PositiveGuy

+1

का उपयोग करने के लिए सेटअप है इसलिए इसने मेरे मालिक के पीसी पर ठीक काम किया है। इसका कोई कारण नहीं है कि इसे यहां क्यों नहीं होना चाहिए। मैंने एएसपीनेट खाता एक्सेस दिया क्योंकि मैं वीएस वेब सर्वर चला रहा हूं और अभी भी शून्य लौटाता हूं। – PositiveGuy

उत्तर

2

दाना को आपकी टिप्पणी में आपने कहा कि आपने एएसपी.NET खाता पहुंच दी है। हालांकि, क्या आपने सत्यापित किया है कि वह खाता है जिस पर साइट चल रही है? प्रतिरूपण और अज्ञात पहुंच उपयोगकर्ता को अनदेखा करना आसान हो सकता है।

untested कोड:

Response.Clear(); 
Response.Write(Environment.UserDomainName + "\\" + Environment.UserName); 
Response.End(); 
+0

मैं कैसे पता लगा सकता हूं कि साइट का खुलासा करने के लिए कोड लिखने के बिना कौन सा खाता चल रहा है? – PositiveGuy

+0

अच्छी तरह से उपरोक्त आम तौर पर मैं खाता समस्याओं का निवारण कैसे करता हूं हालांकि मैं एक चेक जोड़ता हूं कि यह मेरे आईपी पते से आ रहा है ताकि न केवल हर कोई इसे देख सके। –

57

यदि आप एक 64-बिट मशीन पर कर रहे हैं हो सकता है। पहले एक सहायक कक्षा बनाएं (.NET 4.0 या बाद की आवश्यकता है):

public class RegistryHelpers 
{ 

    public static RegistryKey GetRegistryKey() 
    { 
     return GetRegistryKey(null); 
    } 

    public static RegistryKey GetRegistryKey(string keyPath) 
    { 
     RegistryKey localMachineRegistry 
      = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, 
             Environment.Is64BitOperatingSystem 
              ? RegistryView.Registry64 
              : RegistryView.Registry32); 

     return string.IsNullOrEmpty(keyPath) 
      ? localMachineRegistry 
      : localMachineRegistry.OpenSubKey(keyPath); 
    } 

    public static object GetRegistryValue(string keyPath, string keyName) 
    { 
     RegistryKey registry = GetRegistryKey(keyPath); 
     return registry.GetValue(keyName); 
    } 
} 

उपयोग:

string keyPath = @"SOFTWARE\MyApp\Settings"; 
string keyName = "MyAppConnectionStringKey"; 

object connectionString = RegistryHelpers.GetRegistryValue(keyPath, keyName); 

Console.WriteLine(connectionString); 
Console.ReadLine(); 
+9

यह ध्यान दिया जाना चाहिए कि इस उत्तर के लिए .NET 4.0 या उच्चतर की आवश्यकता है। – ganders

+1

+1 इससे मुझे बहुत मदद मिली, धन्यवाद। –

+1

धन्यवाद! तुमने अभी मेरा दिन बचा लिया! – raven

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