2011-06-28 11 views
6

Utknąłem z tym pytaniem.Jak skopiować plik z UNC-share do lokalnego systemu?

Mam udział UNC, znam dane konta, które ma pełny dostęp, ale nie ma dostępu do mojego systemu lokalnego. mogę uzyskać dostęp do zdalnego UNC z:

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); 

Ale ja nie mogę uzyskać dostępu do systemu lokalnego podczas personifikacji, ponieważ konto nie ma do niego dostępu.

Jak skopiować plik w tej sytuacji? Czy muszę używać czegoś takiego jak bufor i włączać/wyłączać personifikację?

+0

Btw, nie zapomnij do dysponowania –

Odpowiedz

3

Co trzeba zrobić, to czytać wszystkie bajty, a następnie zapisać je:

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

Ale, pliki są ogromne ... ~ 200MB - ~ 1Gb .. także jest to część systemu, która może mieć kilka "nie-plików-magazynów". Będzie kopiować pliki w różnych wątkach ... Naprawdę nie chcę Readall dla każdego pliku .. Będzie jeść całą pamięć – Degot

+0

Znalazłem rozwiązanie ... Nazywa się WNetUseConnection – Degot

+0

@Oskar - To kiedyś działało jak dla mnie urok przy użyciu Windows Server 2003/IIS6.x, ale z Windows Server 2008/IIS 7.5 będzie działał (przynajmniej na tyle, na ile mogę to stwierdzić), jeśli użytkownik ma "Lokalne" konto użytkownika w systemie I " m próbuje się połączyć. Więc tak, rozpaczliwie widząc odpowiedź na konto inne niż Administrator. Głupie zabezpieczenia systemu Windows. : - \ – jerhewet

Powiązane problemy