2011-06-28 10 views
6

मैं इस प्रश्न के साथ अटक गया हूँ।यूएनसी-शेयर से स्थानीय सिस्टम में फ़ाइल की प्रतिलिपि कैसे करें?

मेरे पास यूएनसी शेयर है, मुझे खाता विवरण पता है, जिसमें पूर्णता है, लेकिन इसमें मेरे स्थानीय सिस्टम तक पहुंच नहीं है। मैं पहुँच दूरस्थ यूएनसी के साथ प्राप्त कर सकते हैं:

var token = default(IntPtr); 
var context = default(WindowsImpersonationContext); 
LogonUser(_config.Username, _config.Domain, _config.Password, 2, 0, out token); 
context = WindowsIdentity.Impersonate(token); 

//TODO :: System.IO operations 
File.Copy("remote-unc-path","local-path",true); // Exception : Access is denied. 

context.Undo(); 
CloseHandle(token); 

लेकिन, क्योंकि खाते से पहुँच नहीं है, मैं प्रतिरूपण के दौरान अपने स्थानीय प्रणाली का उपयोग नहीं कर सकते।

इस स्थिति में फ़ाइल को कॉपी करने के लिए कैसे? क्या मुझे बफर की तरह कुछ उपयोग करने की आवश्यकता है और प्रतिरूपण चालू/बंद करें?

+0

Btw, मत भूलना –

उत्तर

3

आप क्या करना है सभी बाइट्स पढ़ सकते हैं और फिर उन्हें लिखने के लिए:

var token = default(IntPtr); 
    using (var context = default(WindowsImpersonationContext)) 
    { 
     LogonUser(_config.Username, _config.Domain, _config.Password, 2, 0, out token); 
     context = WindowsIdentity.Impersonate(token); 
     var bytes = File.ReadAllBytes("remote-unc-path"); 
     context.Undo(); 
     CloseHandle(token); 
     File.WriteAllBytes("local-path", bytes); 
    } 
+0

निपटान के लिए लेकिन, फ़ाइलें विशाल रहे हैं ... ~ 200Mb - ~ 1 जीबी .. यह भी, यह प्रणाली का हिस्सा है, जिसमें कई "unc-file-storages" हो सकते हैं। यह फाइलों को विभिन्न धागे में कॉपी करेगा ... मैं वास्तव में प्रत्येक फाइल के लिए पढ़ना नहीं चाहता .. यह सभी मेमोरी – Degot

+0

खाएगा मुझे एक समाधान मिला है ... इसका नाम WNetUseConnection – Degot

+0

@ ओस्कर - यह काम करने के लिए प्रयुक्त होता है विंडोज सर्वर 2003/आईआईएस 6.एक्स का उपयोग कर मेरे लिए एक आकर्षण की तरह, लेकिन विंडोज सर्वर 2008/आईआईएस 7.5 के साथ यह केवल काम करेगा (कम से कम जहां तक ​​मैं बता सकता हूं) यदि उपयोगकर्ता के पास सिस्टम पर "स्थानीय" उपयोगकर्ता खाता है I मैं कनेक्ट करने की कोशिश कर रहा हूँ। तो हाँ, इस बारे में एक गैर-प्रशासक-खाता जवाब भी बेहद जरूरी है। बेवकूफ विंडोज सुरक्षा। : - \ – jerhewet

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