Ich frage mich, ob jemand anderes ein ähnliches Problem hat.File.Copy wirft UnauthorizedAccessException
Ich habe eine einfache Dateikopie Code in meiner Anwendung, die wie unten vereinfacht werden kann (und mein Benutzer habe ich VS2013 geöffnet, um den Code zu debuggen hat die volle Kontrolle über die Quell - und Zielordnerhierarchie - das war nicht so aus irgendeinem Grund habe ich versucht, VS im Admin-Modus ausgeführt wird, die nicht funktioniert hat, dann habe ich manuell Voll Kontrolle an den Benutzer angelegt und sowieso der Fehler beschwert sich über den Quellordner)
// sourcefile was thought to be @"C:\tfs\Dev\Source\some-module\bin\Debug\mybinary.dll";
// retrieved through an environment variable, but was pointing to the folder instead of the file inside
Directory.CreateDirectory(myfolder);
File.Copy(sourcefile, Path.Combine(myfolder, Path.GetFileName(sourcefile)), true);
Dieser Code glücklich, bis ich gearbeitet habe es heute auf meinem lokalen Rechner versucht (und funktioniert immer noch auf meiner Testbed-Maschine). Aber aus irgendeinem Grund begann er den Fehler zu werfen unter:
System.UnauthorizedAccessException: Access to the path 'C:\tfs\Dev\Source\some-module\bin\Debug' is denied.
Result StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite)
Denken kann es sich um eine Datei-Lock-Problem sein, ich neu gestartet und versucht, es wieder von neuem, aber scheiterte.
Der Ordner für die Quelle hat schreibgeschütztes Attribut und denke, dass dies ein Problem sein kann (was seltsam ist), ich habe versucht, es zu deaktivieren, kann aber nicht. Dann habe ich den Ordner aus dem tfs-Arbeitsbereich in einen anderen Ordner (unter c: \ users \ my-user ..) verschoben und kann das schreibgeschützte Attribut immer noch nicht entfernen (es scheint zu funktionieren, aber die erneute Überprüfung zeigt das gleiche Attribut auf dem Datei). Ich habe sogar hektisch versucht, die schreibgeschützten Ordner aller Elternordner zu löschen, und dann aufgegeben, weil es in Ader ist. Und darf in keinem Zusammenhang mit dem ursprünglichen Problem stehen.
Ich überprüft ähnlich wie Fragen und Gedanken und Optionen ausgehen.
Win7, .net 4.5.2, VS2013 sind einige Konfigurationen.
weitere Experimente, aktualisieren Ich versuchte Directory.CreateDirectory auf dem Quellverzeichnis mit Sicherheitsregeln mit voller Berechtigung des aktuellen Benutzers verwendet wird, ändert nichts. Warum sollte es sich beschweren, dass das Quelldateiverzeichnis mit beginnt?
bedeutet, dass der aktuelle Benutzer nicht berechtigt ist, in dieses Verzeichnis zu schreiben. Setzen Sie zuerst die Berechtigung für das Benutzerkonto, auf dem Sie die Anwendung ausführen. –
Vorschläge: a) Check-Datei existiert nicht am Ziel; b) Sleep eine Sekunde und versuchen Sie es erneut, da AV möglicherweise die Datei scannt und vorübergehend blockiert –
Niranjan, ich bereits erwähnen im ersten Absatz über die vollständige Kontrolle für den Benutzer. Jorge, gute Idee über den AV, ich werde es überprüfen! – MattAPiroglu