UnauthorizedAccessException beim Versuch, aus einem ZipArchive zu extrahierenC#

Ein Treffpunkt für C#-Programmierer
Guest
 UnauthorizedAccessException beim Versuch, aus einem ZipArchive zu extrahieren

Post by Guest »

Ich arbeite an einer C#-Konsolenanwendung, die ein .zip-Archiv von einer GitHub-Release-Seite herunterlädt und es lokal in eine bestimmte Datei extrahiert. Der Download-Vorgang funktioniert korrekt, aber ich werde diese Zeile auch einfügen, für den Fall, dass es diesbezüglich Probleme geben könnte.

Code: Select all

client.DownloadFile("RELEASE-URL-HERE", "Release.zip");
using (ZipArchive archive = ZipFile.OpenRead("Release.zip"))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
Console.WriteLine("Extracting " + entry.Name);
entry.ExtractToFile(Path.Combine(@"E:\dev\winforms\pie\bin\Release", entry.Name));
}
}
Ich weiß, dass es einen einfacheren Prozess gibt, alle Elemente aus einer Datei zu extrahieren, aber ich wollte es mit der foreach-Schleife machen, um die Kontrolle über jede Datei zu haben extrahiert (vielleicht Dateien filtern oder bestimmte Dateitypen protokollieren).
Wenn der Extrahierungsprozess beginnt, erhalte ich jedoch die folgende Ausnahme:

Code: Select all

System.UnauthorizedAccessException: Access to the path 'E:\dev\winforms\pie\bin\Release' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at 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, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.Compression.ZipFileExtensions.ExtractToFile(ZipArchiveEntry source, String destinationFileName, Boolean overwrite)
at pie.PieUpdater.Main()
Ich dachte zunächst, dass es aus dem aktuellen Ordner stammen könnte, in dem ich mich befinde, aber selbst wenn ein leerer Ordner in einem völlig anderen Pfad erstellt wird (z. B. E:\outputfolder) , der Fehler scheint derselbe zu sein.
Ich habe sogar versucht, die ausführbare Datei als Administrator auszuführen, aber es scheint sich nichts zu ändern.
Habe die Antworten überprüft aus Warum wird der Zugriff auf den Pfad verweigert?, und einer davon scheint zu sagen dass dieses Problem auftritt, wenn die Ausgabedatei ein Verzeichnis ist und das erste Element, das extrahiert werden soll, tatsächlich ein Ordner namens /x64 ist. Ich bin zu 90 % sicher, dass das Problem hierher kommt.
Ist meine Art, mit Verzeichnissen umzugehen, falsch? Muss ich manuell durch alle Verzeichnispfade innerhalb der ZIP-Datei navigieren und sie als Dateien extrahieren? Oder kommt das Problem woanders her?
Wenn die Verzeichnisverwaltungslogik falsch ist, gibt es eine einfachere Möglichkeit, ein Archiv zu extrahieren, das sowohl Verzeichnisse als auch Dateien enthält, ohne die Verzeichnisse separat verwalten zu müssen? ?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post