2012-06-26 13 views
16

मैं एक सी # Windows सेवा मेंसी # खिड़कियों सेवा में AppData स्थानीय फ़ोल्डर पथ प्राप्त

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 

का उपयोग कर C:\Users\<username>\AppData\Local फ़ोल्डर पथ प्राप्त करने की कोशिश कर रहा हूँ, लेकिन यह कुछ अन्य पथ

C:\Windows\ServiceProfiles\LocalService\AppData\Local 

किसी भी करता है देता है क्या कोई विचार है कि इसे सही तरीके से कैसे किया जाए?

+0

यह होती है जब आप अपने अनुप्रयोग को तैनात? – Rozuur

+9

यह सामान्य है, क्योंकि आपकी सेवा 'स्थानीय सिस्टम 'खाते के अंतर्गत चलती है। –

+4

1 किसी को सेट (टिप्पणी के बिना) दूर ले लिया - मुझे एक उचित सवाल लगता है और एक जाल में कई लोग आ सकते हैं। – Wolf5370

उत्तर

7

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

+0

मुझे प्रश्न बदलने दो, मैं यह पथ "सी: \ उपयोगकर्ता \ उपयोगकर्ता नाम \ AppData \ Local" प्राप्त करना चाहता हूं, तो इसके लिए मुझे "सेवा खाता" का उपयोग करना चाहिए? या मैं सी # विंडोज सेवा में यह रास्ता कैसे प्राप्त करूंगा। –

+0

जब आप "उपयोगकर्ता नाम" कहते हैं तो क्या आपका मतलब वास्तविक उपयोगकर्ता का फ़ोल्डर है या क्या आप बस अपने आवेदन के लिए एक फ़ोल्डर चाहते हैं? चूंकि कून ने अपनी टिप्पणियों में कहा, यदि आप बिना किसी विशिष्ट उपयोगकर्ता को सक्रिय रूप से लॉग इन और उस जानकारी को पारित करना चाहते हैं, तो यह एक सुरक्षा जोखिम है और यह एक मुद्दा होगा। कून और मैं दोनों जो कहते हैं उसमें सही हैं, लेकिन हम अलग-अलग प्रश्नों का उत्तर दे रहे हैं, इसलिए आपको यह निर्दिष्ट करना होगा कि आपकी सेवा का उपयोग कैसे किया जा रहा है और यह किस तक पहुंच चाहता है। तो शायद हम आगे ढेर कर सकते हैं। – Wolf5370

+0

उपयोगकर्ता नाम वर्तमान उपयोगकर्ता लॉग इन है। –

3

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

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

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; 
संबंधित मुद्दे