2012-08-17 22 views
5

मैं एक WPF उपयोगिता बना रहा हूं जिसे स्थानीय मशीन की रजिस्ट्री तक पहुंचने की आवश्यकता है, फिर प्रोग्राम के इंस्टॉलेशन पथ का पता लगाएं।रजिस्ट्री से फ़ाइल स्थापना पथ पुनर्प्राप्त करना

मैंने रेजीडिट के माध्यम से कुंजी पर नेविगेट किया है और यह डेटा के भीतर नाम, प्रकार और डेटा देता है, यह इंस्टॉलेशन पथ दिखाता है, मैं इंस्टॉलेशन पथ निकालना चाहता हूं।

मैं जानता हूँ कि मैं रजिस्ट्री के भीतर इस कुंजी नेविगेट करने की आवश्यकता:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ अनुप्रयोग पथ \

तो मैं के साथ इस कुंजी के अंदर एक फ़ोल्डर का उपयोग करने की जरूरत है स्थापना पथ के बारे में जानकारी।

-

+0

मैं केवल कुंजी पढ़ने की इच्छा है, तो विशेष कार्यक्रम स्थापना पथ को निकालने के लिए। – LouisColeman

+0

जब आप किसी उत्तर के साथ आए हैं, तो कृपया मूल प्रश्न को संपादित करने के बजाय इसे एक के रूप में पोस्ट करें। =) –

+0

रजिस्ट्री तक पहुंचने वाली अधिकांश स्थितियों में निराश है, आपको जो कुछ चाहिए वह एप्लिकेशन और पर्यावरण कक्षाओं में पाया जा सकता है, https://msdn.microsoft.com/en-us/library/system.windows.application(v = बनाम .110) .aspx https://msdn.microsoft.com/en-us/library/system.environment(v=vs.110).aspx या एक configfile – MikeT

उत्तर

10

मैंने अपनी समस्या हल की, जो भविष्य में समाधान चाहता है यदि आप अभी भी इसके बाद फंस गए हैं तो कृपया मुझे संदेश भेजें, मुझे पता चला कि संसाधनों को ढूंढना मुश्किल था।

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\App Paths\myexe.exe"); 
string regFilePath = null; 

object objRegisteredValue = key.GetValue(""); 

registeredFilePath = value.ToString(); 
+3

का उपयोग उपयोगी उत्तर के लिए धन्यवाद। एक खुली रजिस्ट्रीकी से जुड़े सिस्टम हैंडल को रिहा करने के लिए 'कुंजी' का निपटारा किया जाना चाहिए। आप 'उपयोग' कथन में 'कुंजी' के उपयोग को लपेट सकते हैं। – Ron

0

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

उदाहरण उपयोग:

public string SkypeExePath => InstalledApplicationPaths.GetInstalledApplicationPath("lync.exe"); 

वर्ग:

public static class InstalledApplicationPaths 
{ 

    public static string GetInstalledApplicationPath(string shortName) 
    { 
     var path = GetInstalledApplicationPaths().SingleOrDefault(x => x?.ExectuableName.ToLower() == shortName.ToLower())?.Path; 
     return path; 
    } 

    public static IEnumerable<(string ExectuableName, string Path)?> GetInstalledApplicationPaths() 
    { 
     using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\App Paths")) 
     { 
     foreach (var subkeyName in key.GetSubKeyNames()) 
     { 
      using (RegistryKey subkey = key.OpenSubKey(subkeyName)) 
      { 
       yield return (subkeyName, subkey.GetValue("")?.ToString()); 
      } 
     } 
     } 
    } 

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