2010-06-22 9 views
8

मैं सी # से सभी विंडोज उपयोगकर्ताओं के लिए एप्लिकेशन डेटा फ़ोल्डर पथ कैसे ढूंढूं?सभी विंडोज उपयोगकर्ताओं के लिए एप्लिकेशन डेटा फ़ोल्डर पथ तक पहुंच

मैं वर्तमान उपयोगकर्ता और अन्य विंडोज उपयोगकर्ताओं के लिए इसे कैसे ढूंढूं?

उत्तर

11

Environment.SpecialFolder.ApplicationData और Environment.SpecialFolder.CommonApplicationData

+1

विशेष फ़ोल्डर के लिए +1; @ हेमा: देखें, http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx –

9

यह आपको "सभी उपयोगकर्ता" अनुप्रयोग डेटा फ़ोल्डर के लिए पथ दे देंगे।

string path = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 
+4

यदि आपको पढ़ने/लिखने की पहुंच की आवश्यकता है तो यह पथ केवल पढ़ने की पहुंच प्रदान करता है: http: // www.codeproject.com/Tips/61987/Allow-write-modify-access-to-CommonApplicationData –

0

प्रत्येक उपयोगकर्ता के लिए ऐपडेटा फ़ोल्डर रजिस्ट्री में संग्रहीत किया जाता है।

इस मार्ग का उपयोग करना:

const string regKeyFolders = @"HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"; 
const string regValueAppData = @"AppData"; 

एक चर sid उपयोगकर्ताओं sid युक्त स्ट्रिंग को देखते हुए, आप इस तरह उनके AppData पथ प्राप्त कर सकते हैं:

string path=Registry.GetValue(regKeyFolders.Replace("<SID>", sid), regValueAppData, null) as string; 
5

@ डेरिक के जवाब से अनुकूलित। निम्नलिखित कोड को कंप्यूटर पर प्रत्येक उपयोगकर्ता के लिए स्थानीय ऐपडेटा का मार्ग मिलेगा और पथों को स्ट्रिंग्स की सूची में रखा जाएगा।

 const string regKeyFolders = @"HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"; 
     const string regValueAppData = @"Local AppData"; 
     string[] keys = Registry.Users.GetSubKeyNames(); 
     List<String> paths = new List<String>(); 

     foreach (string sid in keys) 
     { 
      string appDataPath = Registry.GetValue(regKeyFolders.Replace("<SID>", sid), regValueAppData, null) as string; 
      if (appDataPath != null) 
      { 
       paths.Add(appDataPath); 
      } 
     } 
संबंधित मुद्दे

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