Datei.Löschen Sie Zugriff auf den Pfad verweigert

Meine-Konsole-Anwendung-Programm ist die Schaffung einige runtime-Dateien, während es arbeitet so, was ich will zu tun ist, löschen Sie alle diese Dateien auf den Start der Anwendung. Ich habe dies ausprobiert:

public static void Empty(string targetDir)
{
    var directory = new DirectoryInfo(targetDir);
    if (!directory.Exists) return;
    foreach (var file in directory.GetFiles()) file.Delete();
    foreach (var subDirectory in directory.GetDirectories()) subDirectory.Delete(true);
}

...nur zum gucken für alle Dateien/Ordner im angegebenen Pfad (das ist in einem Unterverzeichnis im Programm-execution-Pfad), dann löschen Sie Sie. Jedoch bekomme ich folgende exception:

Zugriff auf den Pfad 'Datei' wird verweigert.

Ich versucht, das Programm als administrator auszuführen ohne Erfolg; ich möchte Jedoch eine Lösung, die funktioniert, ohne sich mit administrator-Privilegien.

Hinweise :

  1. Die Datei nicht ausgeführt wird in einer anderen Anwendung.
  2. Die Datei ist nicht in einem geschützten Ordner.
  3. Die Datei kann manuell gelöscht werden, ohne Probleme, und das ist, warum ich
    bin hier.
  • Nur eine Frage: Sind Sie wirklich löschen aller Dateien in den Pfad der Anwendung?
  • Ich möchte nur sagen, dass, da das Programm auch eine Datei.
  • Ofc-Nein, die Dateien, die ich löschen sind in einem Unterverzeichnis befindet sich in der app Weg.
  • Was ist der tatsächliche Wert der Fehlermeldung gibt? Sie haben substituiert 'file' da..
  • ja, sehen Sie, das ist Sie beschweren sich, dass sollte einfach sein, zu verfolgen - es könnte sein, paar Dinge. Auch versuchen, löschen Sie diese Datei manuell etc. Sie haben einen sehr klaren Fall für das Debuggen
  • Sie laden einige dll ' s oder streams verwenden?
  • es ist manuell gelöscht ohne probs.
  • nur eine Vermutung, können Sie erstellen eine Liste von Dateien außerhalb der foreach-Schleife durch es?
  • ich verstehe nicht, was du meinst.
  • FileInfo[] fi = directory.GetFiles(); foreach(var Datei in fi) - Datei.Delete(); und dasselbe gilt für Verzeichnis. Vielleicht enumarator das problem verursacht
  • Ausnahme ist, nicht zu Sammlungen, es ist I/O
  • wirklich? 😀 eigentlich das, was ich davon ausgehen ist, dass GetFiles() gibt den Typ Ienumerable, die durch nachgegeben zurück, was zu Problemen führen könnte, wenn eine oder mehrere Dateien fehlen, nach dem ersten entfernen
  • du denkst "InvalidOperationException - Auflistung wurde geändert", aber in diesem Fall gibt es eine "Zugriff verweigert"
  • Alternative Antwort: stackoverflow.com/a/648055/3543437
  • Möglich, Duplikat der Wie lösche ich ein Verzeichnis mit nur-lese-Dateien in C#?

Schreibe einen Kommentar