C#: Verschlüsselte ZIP-Dateien verschieben?

4 Antworten

Also du hast aus deiner Entwicklungsumgebung heraus keinen Zugriff auf diesen Pfad. Du könntest das VisualStudio mal als Administrator öffnen oder das Manifest in deinem Projekt entsprechend anpassen. Kann ja sein, dass du mit erhöhten Rechten auf den Pfad kommst.

Wenn du per Explorer auf den Pfad kommst, dann auch per Programm - eine Variante zum Testen deines Zugriffs.

Ansonsten würde ich den Pfad einstellbar machen und zunächst mal mit einem lokalen Pfad entwickeln / Testen und dann in der Produktionsumgebung mit dem korrekten Pfad.

Woher ich das weiß:Berufserfahrung – Senior-Softwaredeveloper mit 20 Jahren Berufserfahrung.

https://docs.microsoft.com/de-de/dotnet/api/system.io.file.move

Verschlüsselte Dateien sind wie jede andere Datei auch, nur eben verschlüsselt.

Irgendetwas Anderes verhindert den Zugriff, vielleicht hast Du in dem Ordner eingestellt, dass man Admin-Rechte braucht?

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler
Tastaturbrix 
Fragesteller
 14.05.2020, 12:45

Das Tool wird von einem Admin ausgeführt der alle Rechte eigentlich hat.

Komplette Fehlermeldung:

Unbehandelte Ausnahme: System.UnauthorizedAccessException: Der Zugriff auf den Pfad "Pfad\NameDerDatei.7z" wurde verweigert.

  bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)  bei System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boole an useLongPath, Boolean checkHost) bei System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)  bei System.IO.File.Open(String path, FileMode mode)  bei Mappe.Ordner.Methode.<GetFiles>d__2.MoveNext() in C:\Users\Anwender\source\repos\Projektmappe\Projekt\Ordner\Methode.cs:Zeile 147.

--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---  bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) bei System.Runtime.CompilerServices.TaskAwaiter.GetResult() bei OneDrive.Program.<Preloader>d__5.MoveNext() in C:\Users\Anwender\source\repos\Projektordner\Projektname\Program.cs:Zeile 59.

--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---  bei System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b_ _6_1(Object state)  bei System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)  bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)  bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)  bei System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()  bei System.Threading.ThreadPoolWorkQueue.Dispatch()  bei System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

0
Palladin007  14.05.2020, 13:02
@Tastaturbrix

Wenn ein Programm nicht explizit als Admin gestartet wird oder selber nach Admin-Rechten fragt, hat es keine Admin-Rechte.
Entweder der User selber als Nicht-Admin hat alle benötigten Rechte, oder das Programm darf nicht darauf zugreifen.
Ich würde aber niemals einem Programm Admin-Rechte geben, nur damit es auf ein paar Dateien mehr zugreifen muss, die Zugriffsrechte sollten entsprechend angepasst werden.

Ansonsten gäbe es noch mehr Möglichkeiten:

  • Die "Datei" ist eigentlich ein Ordner
  • Die Datei ist ReadOnly
  • Die Datei wird durch einen Prozess gesperrt

Zumindest gibt's diese drei Fälle noch bei File.Delete, bei File.Move werden sie aus irgendeinem Grund nicht aufgeführt.

PS:

File.Create() gibt einen FileStream zurück, der geschlossen werden muss.
Ist ein häufiger Fehler, der dazu führt, dass eine Datei unerklärlicherweise von einem Prozess gesperrt ist.

PPS:

Das alles betrifft natürlich Quell- und Zielpfad.

1
Tastaturbrix 
Fragesteller
 14.05.2020, 16:06
@Palladin007

Kurzes Update:

In meinem Tool habe ich erst die Verzeichnisse aus dem Root geholt, samt Dateien, am Ende dann die Daten auf dem Root selber.
Hier wurde der Fehler geworfen.

Hab den Spies nun rumgedreht, also erst Daten aus dem Root danach die Verzeichnisse, hier wird der fehler nicht geworfen.

Warum auch immer -_-

0
Palladin007  14.05.2020, 16:10
@Tastaturbrix

Code ist für einen Softwareentwickler oft hilfreicher, als irgendeine unvollständige Erklärung davon

0

Du kannst nicht auf den Inhalt einer verschlüsselten Datei zugreifen. Sie zu verschieben ist dagegen immer möglich. Was genau meinst du also mit "verschieben"? Welcher Code hat die Fehlermeldung verursacht? Möchtest du ein File aus einem verschlüsselten und mit 7zip komprimierten Ordner verschieben, oder das 7z-File?

Das Problem ist offensichtlich, dass dir die Rechte fehlen auf diese Datei zuzugreifen. Das sie verschlüsselt ist, ist egal.

Was ist denn der wahre Pfad zur Datei? Nicht dein Platzhalter.

Woher ich das weiß:Berufserfahrung – Softwareentwicklerin
Palladin007  14.05.2020, 13:04

Wo ist da ein Platzhalter?

Relative Pfade sind genauso in Ordnung, wie absolute Pfade.

0
Lamanini  14.05.2020, 13:07
@Palladin007

Sein „Pfad\NameDerDatei.7z“ wirkt so, als wäre es ein Platzhalter den er für diese Frage in die Fehlermeldung gesetzt hat, um nicht den wahren Dateinamen offenzulegen.

0
Palladin007  14.05.2020, 13:10
@Lamanini

Könnte aber auch ein Test-Pfad sein, bei mir hießen die früher auch so :D

Allgemein ändert der Pfad aber auch nichts.
Die möglichen Ursachen für den Fehler hier kann man dem Pfad nicht ansehen.

0