हम एक सी # .NET विंडोज सेवा विकसित कर रहे हैं।उपयोगकर्ता का प्रतिरूपण
हमारी सेवा प्रणाली खाते के अंतर्गत चल रहा है, और हम USER उपयोगकर्ता में लॉग इन प्रतिरूपित करने के लिए कोशिश कर रहे हैं। प्रतिरूपण ठीक काम करता है, यानी प्रतिरूपण के बाद System.Security.Principal.WindowsIdentity.GetCurrent()
पर कॉल करते समय हमें सही उपयोगकर्ता 'USER' मिलता है।
समस्या यह है कि जब हम उपयोगकर्ता प्रोफ़ाइल तक पहुँचने का प्रयास हम अपेक्षित परिणाम नहीं मिलता है। एक उदाहरण रजिस्ट्री CURRENT_USER तक पहुंच रहा है। हमें एक एक्सेस अस्वीकार त्रुटि मिलती है। किसी तीसरे पक्ष के फ़ंक्शन का उपयोग करते समय, जिसे हम मानते हैं कि रजिस्ट्री का उपयोग भाग में किया जाता है, हमें "असली" (प्रतिरूपण से पहले) उपयोगकर्ता के विवरण मिलते हैं। Environment.ExpandEnvironmentVariables("%TEMP%")
पर कॉल करते समय भी हमें लॉग-इन उपयोगकर्ता प्रोफ़ाइल की बजाय सिस्टम प्रोफ़ाइल मिलती है।
वहाँ एक रास्ता पूरी तरह से एक अलग प्रयोक्ता का रूप धारण करने के लिए है ?. मुझे पता है कि हम एक विशिष्ट उपयोगकर्ता प्रोफ़ाइल प्राप्त करने के लिए LoadUserProfile का उपयोग कर सकते हैं, लेकिन यह हमारे लिए अच्छा नहीं है, क्योंकि हम वर्तमान उपयोगकर्ता प्रोफ़ाइल का उपयोग करने वाले तृतीय पक्ष डीएल चला रहे हैं।
हमारे प्रतिरूपण कोड this
सबसे पहले, आपको System.IO.Path.GetTempPath() का उपयोग करना चाहिए; और यदि वह अभी भी काम नहीं करता है तो यह आपकी समस्या हो सकती है: http://stackoverflow.com/questions/944483/how-to-get- समकालीन- फ़ोल्डर-for-current-user स्वीकृत उत्तर देखें और यह कैसे काम करता है। – lahsrah
मुझे और अधिक विशिष्ट होने दें। हम किसी तीसरे पक्ष के डीएल को कॉल का उपयोग कर रहे हैं जिसे हम नहीं बदल सकते हैं। इसलिए यदि वे एक विशिष्ट उपयोगकर्ता प्रोफ़ाइल का निष्पादन कर रहे हैं तो हमें उस उपयोगकर्ता प्रोफ़ाइल के साथ प्रक्रिया को चलाना होगा। – user844541
@ user844541 कृपया मेरे लिंक को दोबारा पढ़ें। – lahsrah