Directory.Delete funktioniert nicht. Zugriff verweigert Fehler, aber unter Windows Explorer ist es in Ordnung

8

Ich habe die SO gesucht, aber nichts gefunden.

Warum funktioniert das nicht?

%Vor%

Oberhalb der Zeile wird die Ausnahme "Zugriff verweigert" ausgelöst. Ich habe Administratorrechte und kann das Verzeichnis mit dem Explorer löschen.

Sieht aus wie einige verbotene Zeichen? aber Windows Explorer kann damit umgehen. Wie kann ich Verzeichnisse mit solchen Namen löschen?

    
binball 09.11.2009, 14:46
quelle

5 Antworten

16

Vielen Dank für Ihre Eingabe, es hilft mir bei der schnellen Lösung.

Wie Phil erwähnt "Directory.Delete schlägt fehl, wenn es ist, unabhängig von Berechtigungen (siehe unten msdn.microsoft.com/en-us/library/...)"

Zusätzlich Kann das schreibgeschützte Attribut nicht aus dem Ordner entfernen Microsoft sagt:

  

Möglicherweise können Sie die Datei nicht entfernen   Schreibgeschütztes Attribut aus einem Ordner   Verwenden von Windows Explorer. In Ergänzung,   Einige Programme zeigen möglicherweise Fehler an   Nachrichten, wenn Sie versuchen, Dateien zu speichern   der Ordner.

Fazit: Entferne immer alle dir, Dateiattribute anders als Normal, bevor du löschst. So unter dem Code lösen Sie das Problem:

%Vor%     
binball 09.11.2009, 18:41
quelle
5

Ich habe den binball-Code verwendet und eine Zeile hinzugefügt, um die Verzeichnisattribute auf normal zu setzen.

%Vor%     
Chuck 05.06.2015 18:43
quelle
2

Haben Sie versucht, eine neue Instanz der Klasse DirectoryInfo zu erstellen, und dann die Existenz vor dem Löschen überprüfen? Der Code würde so aussehen:

%Vor%

Überprüfen Sie außerdem, ob Sie (der Benutzer, der die Anwendung ausführt) Zugriff auf den Ordner haben. Wenn es sich um ein Netzwerklaufwerk handelt, muss es vom Benutzer, der die Anwendung ausführt, gelöscht werden können.

Hoffe, das hilft!

    
Scott 09.11.2009 14:59
quelle
2

Je nach dem Verzeichnis, in dem Sie arbeiten, benötigen Sie wahrscheinlich Administratorzugriff, um Dateien zu löschen. Um dies zu testen, führen Sie Ihre App als Administrator aus dem Explorer aus und überprüfen Sie, ob sie funktioniert (klicken Sie mit der rechten Maustaste auf die EXE-Datei und wählen Sie "Als Administrator ausführen").

Wenn das funktioniert, müssen Sie Administratorrechte erhalten, wenn Ihre Anwendung ausgeführt wird. Sie können dies tun, indem Sie Ihrem Anwendungsmanifest Folgendes hinzufügen:

%Vor%     
jheddings 09.11.2009 15:17
quelle
0

Ich hatte dieses Symptom und es war tatsächlich explorer.exe selbst, die das Verzeichnis gesperrt hat. Ich fand dies mit handle.exe , aber man kann auch mit powershell herausfinden, welcher Prozess gesperrt ist die Datei:

%Vor%

Sie müssen dann entscheiden, ob Sie versuchen, diesen Prozess anmutig zu stoppen oder nicht; Es wäre einfach, das Powershell-Skript zu ändern, um zu versuchen, alle Prozesse zu beenden, die die Datei sperren:

%Vor%     
mtd 03.04.2014 15:44
quelle

Tags und Links