2010-07-24 19 views
9

ऐसा नहीं है तो मेरी रजिस्ट्री में मेरे पास "लोकमामाइन \ सॉफ़्टवेयर \ माइक्रोसॉफ्ट \ विंडोज \ CurrentVersion \ Run \" के अंतर्गत प्रविष्टि है जिसे "COMODO इंटरनेट सुरक्षा" कहा जाता है जो मेरी फ़ायरवॉल है । अब मैं जानना चाहता हूं कि यह प्रविष्टि मौजूद है या नहीं, यह जांचने के लिए मैं रजिस्ट्री कैसे प्राप्त कर सकता हूं? अगर ऐसा होता है तो ऐसा नहीं करते हैं। मुझे पता है कि उपकुंजी "रन" मौजूद है या नहीं, "COMODO इंटरनेट सुरक्षा" के लिए प्रविष्टि नहीं है, यह वह कोड है जिसका उपयोग मैं उपकुंजी मौजूद होने के लिए कर रहा था।अगर रजिस्ट्री प्रविष्टि मौजूद है तो ऐसा करें, यदि ऐसा नहीं है, तो

   using (RegistryKey Key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\")) 
       if (Key != null) 
       { 

        MessageBox.Show("found"); 
       } 
       else 
       { 
        MessageBox.Show("not found"); 
       } 

उत्तर

9

आप एक उपकुंजी के अंतर्गत एक मूल्य के लिए देख रहे हैं, तो आप RegistryKey.GetValue(string) उपयोग कर सकते हैं (यह है कि आप "प्रवेश"? द्वारा क्या मतलब है)। यदि यह मौजूद है तो यह मूल्य वापस कर देगा, और अगर यह नहीं करता है तो शून्य।

उदाहरण के लिए:

using (RegistryKey Key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\")) 
    if (Key != null) 
    {  
     string val = Key.GetValue("COMODO Internet Security"); 
     if (val == null) 
     { 
      MessageBox.Show("value not found"); 
     } 
     else 
     { 
      // use the value 
     } 
    } 
    else 
    { 
     MessageBox.Show("key not found"); 
    } 
+0

ठीक है और मुझे स्थानीय स्तर पर स्थानीय स्तर पर देखने के लिए कैसे मिलता है? – NightsEVil

+0

उदाहरण जोड़ना। – jwismar

+0

त्रुटि अंतर्निहित रूप से 'ऑब्जेक्ट' को 'स्ट्रिंग' में परिवर्तित नहीं कर सकता। एक स्पष्ट रूपांतरण मौजूद है (क्या आप एक कास्ट गायब हैं?) – NightsEVil

0

नीचे दिए गए लिंक इस स्पष्ट करना चाहिए:

How to check if a registry key/subkey already exists

नमूना कोड:

using Microsoft.Win32; 

RegistryKey rk = Registry.LocalMachine.OpenSubKey("Software\\Geekpedia\\Test"); 

if(rk != null) 
{ 
    // It's there 
} 
else 
{ 
    // It's not there 
} 
+0

मौजूद है, लेकिन मुझे स्थानीय मशीन वर्तमान उपयोगकर्ता माइक्रोसॉफ्ट विंडोज़ के तहत एक विशिष्ट स्टार्ट अप एंट्री की तलाश करनी है – NightsEVil

+0

@Leniel: FYI: यदि, उदाहरण के लिए, 'गीकेपिडिया' एचएलकेएम \ सॉफ्टवेयर के तहत रजिस्ट्री में नहीं है, तो वीएस -2010 फेंकता है कुंजी 'सॉफ्टवेयर \\ Geekpedia \\ टेस्ट "खोलने का प्रयास करते समय शून्य संदर्भ अपवाद। – jp2code

1

इस प्रयास करें:

using (RegistryKey Key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\COMODO Internet Security")) 
{ 
    if (Key != null) 
    MessageBox.Show("found"); 
    else 
    MessageBox.Show("not found"); 
} 
+0

लेकिन मुझे स्थानीय मशीन वर्तमान उपयोगकर्ता माइक्रोसॉफ्ट विंडोज रन के तहत एक विशिष्ट स्टार्ट अप एंट्री की तलाश करनी है – NightsEVil

0

मैं हाल ही में एक समस्या में भाग गया जहां मैं रजिस्ट्री प्रविष्टि में उपकुंजी पकड़ने की कोशिश कर रहा था, लेकिन समस्या यह थी कि जब से मैं रजिस्ट्री के उस खंड में प्रत्येक रजिस्ट्री कुंजी पर पुनरावृत्ति कर रहा था, कभी-कभी मानों में उपकुंजी नहीं होती थी। खोज रहा था, और उपकुंजी के मूल्य का मूल्यांकन करने की कोशिश करते समय मुझे एक शून्य संदर्भ अपवाद मिलेगा।

string subkeyValue = null; 

var subKeyCheck = subkey.GetValue("SubKeyName"); 

if(subKeyCheck != null) 
{ 
    subkeyValue = subkey.GetValue("SubKeyName").ToString(); 
} 

तो क्या उपकुंजी मूल्य आप देख रहे हैं पर निर्भर करता है, बस इसे बाहर "SubKeyName के लिए स्वैप:

तो, बहुत कुछ अन्य उत्तर क्या प्रदान की के समान है, यह है कि क्या मैं के साथ जा रहा समाप्त हो गया है "और यह चाल करना चाहिए।

0

मेरे कोड

 private void button2_Click(object sender, EventArgs e) 

    { 
     string HKCUval = textBox1.Text; 
     RegistryKey HKCU = Registry.CurrentUser; 
     //Checks if HKCUval exist. 
     try { 
      HKCU.DeleteSubKey(HKCUval); //if exist. 
     } 
     catch (Exception) 
     { 
      MessageBox.Show(HKCUval + " Does not exist"); //if does not exist. 
     } 

     } 

आशा है कि यह मदद करता है।

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