2008-10-30 5 views
7

मेरे प्रोग्राम के पढ़ने के लिए खोलने के लिए मैं उपयोगकर्ता नाम और पासवर्ड कैसे निर्दिष्ट करूं? फ़ाइल को एक्सेस करने के लिए आवश्यक प्रोग्राम उस खाते से चल रहा है जो फ़ाइल में मौजूद फ़ोल्डर में पढ़ने की पहुंच नहीं है। प्रोग्राम सी # और .NET 2 में लिखा गया है, XP के अंतर्गत चल रहा है और फ़ाइल Windows सर्वर पर है 2003 मशीनफ़ाइल खोलने के लिए प्रमाण-पत्र कैसे पेश करें?

उत्तर

0

आप ऐसे उपयोगकर्ता का प्रतिरूपण कर सकते हैं जिसके पास आवश्यक अधिकार हैं। एक article on MSDN है जो वर्णन करता है कि यह कैसे करें।

12

आप ऐसे उपयोगकर्ता का प्रतिरूपण करना चाहते हैं जिसके पास फ़ाइल तक पहुंचने का अधिकार है।

मैं इस तरह की कक्षा का उपयोग करने की सलाह देता हूं - http://www.codeproject.com/KB/cs/zetaimpersonator.aspx। यह प्रतिरूपण करने के सभी ग़लत कार्यान्वयन को छुपाता है।

using (new Impersonator("myUsername", "myDomainname", "myPassword")) 
{ 
    string fileText = File.ReadAllText("c:\test.txt"); 
    Console.WriteLine(fileText); 
} 
+0

यह बहुत अच्छा काम करता है। मैंने पाया कि फ़ाइल पथ किसी अन्य मशीन पर स्थित होने पर यूएनसी प्रारूप में होना चाहिए। –

+1

मेरे लिए भी काम करता है, मुझे इसे काम करने में थोड़ी देर लग गई क्योंकि मुझे संदर्भित पृष्ठ पर दी गई टिप्पणी को याद आया: कृपया ध्यान दें: उपयोगकर्ता संदर्भ जो प्रतिरूपण शुरू करता है (यानी उपयोगकर्ता संदर्भ जिस पर इसे स्विच किया गया है) की आवश्यकता है "ऑपरेटिंग सिस्टम के हिस्से के रूप में कार्य करें" विशेषाधिकार सेट ._ –

+0

यह एक शर्म की बात है कि कोडप्रोजेक्ट के लेखक ने इसे नूजेट में कभी नहीं ले जाया। मेरा जवाब की टिप्पणी केवल मस्ती के लिए थी; क्योंकि यह समझा जाता है कि आपने 8 साल पहले Nuget से पहले जवाब दिया था। – OmegaMan

5

मैंने Nuget पैकेज NuGet Gallery | Simple Impersonation Library 1.1.0 का उपयोग किया है लेकिन अन्य भी हैं; दूसरों के लिए प्रतिरूपण पर खोजें।

उदाहरण फ़ाइल संरचनाओं के साथ काम करने के लिए इंटरैक्टिव लॉगिन का उपयोग करके उपयोग:

using (Impersonation.LogonUser("{domain}", 
           "{UserName}", 
           "{Password}", 
           LogonType.Interactive)) 
{ 
    var directory = @"\\MyCorpServer.net\alpha\cars"; 

    Assert.IsTrue(Directory.Exists(directory)); 
} 

जेम्स 'नीचे जवाब Nuget से पहले और इससे पहले कि वह बाद में Nuget पर सबसे डाउनलोड किए गए पैकेज के लिए होता था। पुरानी एह?

+0

सरल, बहुत बहुत धन्यवाद! –

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

  • कोई संबंधित समस्या नहीं^_^