2016-04-07 7 views
0

Wenn ich versuche, auf lokale eine vorhandene Datei von einem entfernten Computer zu kopieren mitC# File.Copy von Remote-Computer zu lokalen

File.Copy(
string.Format(@"\\{0}\e$\{1}", computerName, fileName), 
string.Format(@"{0}\{1}\{2}", localPath, computerName, fileName), 
true); 

ich die Exception Could not find part of the path "\\computername\e$\filename" bekommen. Ich habe den Pfad überprüft und es ist korrekt.

Ich glaube nicht, dass ein Berechtigungsproblem beacuse ich die Datei mit Directory.GetFiles erreichen kann, und ich kann darüber hinaus mit FileInfo, Informationen wie Dateigröße oder letztem Schreibdatum erhalten, wenn ich xcopy Befehl cmd mit den gleichen Pfaden auszuführen in der Code kopiert er die Datei erfolgreich.

Kann mir jemand helfen zu verstehen, was ich falsch oder andere Möglichkeiten zum Kopieren von Datei?

+0

Führen Sie diese Dateikopie als Benutzer oder von einer Webseite als Dienst aus? – BugFinder

+0

@BugFinder Ich führe Dateikopie in einem C# -Konsolen-Projekt, so wie ich als Benutzer. –

+0

können Sie versuchen, "net use" zu verwenden. Nach dem Verbinden mit dem Laufwerk können Sie die Datei kopieren. – naro

Antwort

0

Kopieren von oder zu einem Remote-Standort erfolgt nicht mit der normalen Datei.Copy, da die Dateien auf der lokalen Festplatte gespeichert sind oder von Ihrem Netzwerk zugegriffen werden kann. Andere Community-Mitglieder haben bereits einige Lösungen erarbeitet. Am einfachsten kann dies sein:

How to provide user name and password when connecting to a network share

eine andere Lösung wird in diesem Thread provied:

Copying a file to a network share i dont have access to

Sie müssen herausfinden, welche Ihnen am besten passt. Es ist wichtig zu erwähnen, dass Ihr Programm möglicherweise nicht von überall und von allen Benutzern ausgeführt werden kann, wenn Sie den Identitätswechsel überspringen. Was Benutzer daran hindern könnte, fehlerfrei zu arbeiten.

+0

Eigentlich normal file.copy funktioniert unc - ich habe es gerade getan. – BugFinder

+0

Ich nehme es alles zurück :) Ich erinnerte mich, dass ich das selbe machen musste und es nicht ohne diese spezialisierten Weisen arbeiten ließ. Aber wenn es möglich ist, einfacher zu erreichen, warum bleiben Sie dann nicht dabei? – prizm1

+0

Ich denke, es gibt Zeiten, die es nicht funktioniert - wie wenn Sie nicht zu diesem UNC gewesen sind dann haben Sie möglicherweise Ihre Verbindung nicht überprüft und es kann die Kopie jedoch fehlschlagen, solange Ihr PC und der Remote-Server zuvor gesprochen haben das würde funktionieren. Allerdings denke ich, dass die Probleme des OP einfacher sind. – BugFinder

0

Ich entdeckte, dass File.Copy den angegebenen Zielordner nicht erstellt, wenn es nicht existiert, im Gegensatz xcopy Befehl. Dies verwirrte mich, weil ich vermutete, dass, wenn Cmd Befehl das Verzeichnis erstellt auch Copy Methode kann diesen Fall verwalten. Außerdem wurde in der Ausnahmebedingungsnachricht angegeben, dass der Quellpfad falsch und nicht der Zielpfad war.

So, das Problem zu lösen:

localPath = Path.Combine(localPath, computerName); 
if (!Directory.Exists(localPath)) 
{ 
    Directory.CreateDirectory(localPath); 
} 
File.Copy(
string.Format(@"\\{0}\e$\{1}", computerName, fileName), 
Path.Combine(localPath, fileName), 
true); 

ich für mein nicht so gut Englisch und für Ablenkung zu entschuldigen.

Danke für die Hilfe.

Verwandte Themen