Sie können keine Datei oder einen Ordner auf einem NTFS-Dateisystemvolume löschen.

In diesem Artikel wird beschrieben, warum eine Datei oder ein Ordner auf einem NTFS-Dateisystemvolume nicht gelöscht werden kann. Es bietet auch Hilfe bei der Lösung dieses Problems.

Gilt für: Windows Server 2012 R2
Ursprüngliche KB-Nummer: 320081

Hinweis

Intern behandelt NTFS Ordner als einen speziellen Dateityp. Daher gibt die Wortdatei in diesem Artikel entweder eine Datei oder einen Ordner an.

Ursache 1: Die Datei verwendet eine ACL

Sie können eine Datei nicht löschen, wenn die Datei eine Access Control Liste (ACL) verwendet. Um dieses Problem zu beheben, ändern Sie die Berechtigungen für die Datei. Möglicherweise müssen Sie den Besitz der Dateien übernehmen, um die Berechtigungen zu ändern.

Administratoren haben die implizite Möglichkeit, die Besitzer einer Datei zu übernehmen, auch wenn ihnen keine explizite Berechtigung für die Datei erteilt wurde. Dateibesitzer haben die implizite Möglichkeit, Dateiberechtigungen zu ändern, auch wenn ihnen keine expliziten Berechtigungen für die Datei erteilt werden. Möglicherweise müssen Sie also die Verantwortung für eine Datei übernehmen, sich selbst Berechtigungen zum Löschen der Datei erteilen und dann die Datei löschen.

Sie können bestimmte Sicherheitstools nicht verwenden, um Berechtigungen anzuzeigen oder zu ändern, da die Datei über eine nicht kanonische ACL verfügt.

Um dieses Problem zu umgehen, verwenden Sie ein anderes Tool (z. B. einen späteren Build von Cacls.exe).

Die Access Control-Einträge (ACEs) in einer ACL haben je nach Typ eine bestimmte bevorzugte Reihenfolge. Beispielsweise werden ACEs, die den Zugriff verweigern, in der Regel vor ACEs angezeigt, die Zugriff gewähren. Es wird jedoch nicht verhindert, dass ein Programm eine ACL schreibt, die ACEs in beliebiger Reihenfolge aufweist. In einigen früheren Versionen von Windows traten Probleme auf, als Windows versuchte, diese nicht kanonischen ACLs zu lesen. Manchmal können Sie diese ACLs mithilfe des grafischen Sicherheits-Editors von Microsoft Windows Explorer nicht ordnungsgemäß ändern. Dieses Problem wurde in späteren Versionen von Windows behoben. Wenn dieses Problem auftritt, verwenden Sie die neueste Version von Cacls.exe. Auch wenn Sie eine ACL nicht direkt anzeigen oder bearbeiten können, können Sie eine neue ACL schreiben, um Zugriff auf die Datei zu erhalten.

Ursache 2: Die Datei wird verwendet

Sie können eine Datei nicht löschen, wenn die Datei verwendet wird. Um dieses Problem zu beheben, bestimmen Sie den Prozess mit dem geöffneten Handle, und schließen Sie diesen Prozess.

Je nachdem, wie die Datei geöffnet wird, können Sie eine verwendete Datei möglicherweise nicht löschen. Die Datei ist z. B. für exklusiven Zugriff statt für gemeinsam genutzten Zugriff geöffnet. Sie können verschiedene Tools verwenden, um die Prozesse zu ermitteln, für die Dateien bei Bedarf geöffnet sind.

Die Symptome dieses Problems können variieren. Sie können den Befehl "Löschen" verwenden, um eine Datei zu löschen. Die Datei wird jedoch erst gelöscht, wenn der Prozess, bei dem die Datei geöffnet ist, die Datei freigibt. Darüber hinaus können Sie möglicherweise nicht auf das Dialogfeld "Sicherheit" für eine Datei zugreifen, die aussteht. Um dieses Problem zu beheben, bestimmen Sie den Prozess mit dem geöffneten Handle, und schließen Sie diesen Prozess.

Ursache 3: Dateisystembeschädigung verhindert den Zugriff auf die Datei

Sie können die Datei nicht löschen, wenn das Dateisystem beschädigt ist. Um dieses Problem zu beheben, führen Sie das Dienstprogramm Chkdsk auf dem Datenträgervolume aus, um Fehler zu beheben.

Die folgenden Gründe können das Dateisystem beschädigen und Dateien in einen problematischen Zustand versetzen:

  • Fehlerhafte Sektoren auf dem Datenträger
  • Andere fehlerhafte Hardware
  • Softwarefehler

Typische Vorgänge können auf unterschiedliche Weise fehlschlagen. Wenn das Dateisystem eine Beschädigung erkennt, protokolliert es ein Ereignis im Ereignisprotokoll, und Sie erhalten in der Regel eine Meldung, in der Sie aufgefordert werden, Chkdsk auszuführen. Je nach Art der Beschädigung kann Chkdsk Dateidaten wiederherstellen oder nicht. Chkdsk gibt das Dateisystem jedoch in einen intern konsistenten Zustand zurück.

Ursache 4: Dateien sind in Pfaden vorhanden, die tiefer als MAX_PATH Zeichen sind

Sie können eine Datei nicht öffnen, bearbeiten oder löschen, wenn Probleme mit dem Dateipfad vorliegen.

Auflösung 1: Verwenden eines automatisch generierten 8.3-Namens für den Zugriff auf die Datei

Um dieses Problem zu beheben, können Sie den automatisch generierten 8.3-Namen verwenden, um auf die Datei zuzugreifen. Diese Auflösung ist möglicherweise die einfachste Lösung, wenn der Pfad tief ist, da die Ordnernamen zu lang sind. Wenn der 8.3-Pfad ebenfalls zu lang ist oder wenn 8.3-Namen auf dem Volume deaktiviert wurden, wechseln Sie zu Auflösung 2. Weitere Informationen zum Deaktivieren von 8.3-Dateinamen auf NTFS-Volumes finden Sie unter Deaktivieren der 8.3-Namenserstellung auf NTFS-Partitionen.

Lösung 2: Umbenennen oder Verschieben eines tiefen Ordners

Benennen Sie den Ordner so um, dass die Zieldateien, die tiefer als die MAX_PATH nicht mehr vorhanden sind, vorhanden sind. Wenn Sie dies tun, beginnen Sie im Stammordner oder an einem anderen praktischen Ort. Benennen Sie dann Ordner so um, dass sie kürzere Namen haben. Wenn dieses Problem mit diesem Schritt nicht behoben wird, wenn beispielsweise eine Datei mehr als 128 Ordner tief ist, wechseln Sie zu Lösung 4.

Lösung 3: Zuordnen eines Laufwerks zu einem Ordner in der Struktur des Pfads

Ordnen Sie ein Laufwerk einem Ordner innerhalb der Struktur des Pfads der Zieldatei oder des Zielordners zu. Diese Methode verkürzt den virtuellen Pfad.

Angenommen, Sie haben einen Pfad, der wie folgt strukturiert ist:

\\ServerName\SubfolderName1\SubfolderName2\SubfolderName3\SubfolderName4\...

In diesem Pfad beträgt die Gesamtzahl der Zeichen mehr als 255 Zeichen. Um die Länge dieses Pfads auf 73 Zeichen zu kürzen, ordnen Sie ein Laufwerk dem Unterordnername4 zu.

Lösung 4: Verwenden einer Netzwerkfreigabe, die so tief wie der Ordner ist

Wenn die Auflösungen 1, 2 und 3 nicht geeignet sind oder das Problem nicht beheben, erstellen Sie eine Netzwerkfreigabe, die sich so tief wie möglich in der Ordnerstruktur befindet. Benennen Sie dann die Ordner um, indem Sie auf die Freigabe zugreifen.

Lösung 5: Verwenden eines Tools, das tiefe Pfade durchlaufen kann

Viele Windows-Programme erwarten, dass die maximale Pfadlänge kürzer als 255 Zeichen sein wird. Diese Programme weisen nur genügend internen Speicher zu, um diese typischen Pfade zu verarbeiten. NTFS hat diesen Grenzwert nicht und kann viel längere Pfade enthalten.

Dieses Problem kann auftreten, wenn Sie zu einem bestimmten Zeitpunkt in Ihrer Ordnerstruktur eine Freigabe erstellen, die bereits relativ tief ist, und dann mithilfe der Freigabe eine tiefe Struktur unterhalb dieses Punkts erstellen. Einige Tools, die lokal in der Ordnerstruktur ausgeführt werden, können möglicherweise nicht die gesamte Struktur vom Stamm aus durchlaufen. Möglicherweise müssen Sie diese Tools auf eine besondere Weise verwenden, damit sie die Freigabe durchlaufen können. Die CreateFile-API-Dokumentation beschreibt eine Methode zum Durchlaufen der gesamten Struktur in dieser Situation.

In der Regel können Sie Dateien mithilfe der Software verwalten, die sie erstellt. Wenn Sie über ein Programm verfügen, das Dateien erstellen kann, die tiefer als MAX_PATHsind, können Sie in der Regel dasselbe Programm verwenden, um die Dateien zu löschen oder zu verwalten. Sie können in der Regel Dateien löschen, die auf einer Freigabe erstellt werden, indem Sie dieselbe Freigabe verwenden.

Ursache 5: Der Dateiname enthält einen reservierten Namen im Win32-Namensraum

Wenn der Dateiname einen reservierten Namen im Win32-Namensraum enthält, z. B. lpt1, können Sie die Datei nicht löschen. Um dieses Problem zu beheben, verwenden Sie ein Nicht-Win32-Programm, um die Datei umzubenennen. Sie können ein POSIX-Tool oder ein anderes Tool verwenden, das die entsprechende interne Syntax für die Verwendung der Datei verwendet.

Darüber hinaus können Sie einige integrierte Befehle verwenden, um die typischen reservierten Win32-Namensüberprüfungen zu umgehen, wenn Sie eine bestimmte Syntax verwenden, um den Pfad der Datei anzugeben.

Wenn Sie ein Handle für eine Datei mithilfe des typischen Win32 CreateFile-Mechanismus öffnen, sind bestimmte Dateinamen für DOS-Geräte im alten Stil reserviert. Aus Gründen der Abwärtskompatibilität sind diese Dateinamen nicht zulässig und können nicht mithilfe typischer Win32-Dateiaufrufe erstellt werden. Dieses Problem ist keine Einschränkung von NTFS.

Sie können ein Win32-Programm verwenden, um die typischen Namensüberprüfungen zu umgehen, die beim Erstellen oder Löschen einer Datei durchgeführt werden, indem Sie die gleiche Technik verwenden, mit der Sie Ordner tiefer als MAX_PATHdurchlaufen. Darüber hinaus unterliegen einige POSIX-Tools diesen Namensüberprüfungen nicht.

Ursache 6: Der Dateiname enthält einen ungültigen Namen im Win32-Namensraum.

Sie können eine Datei nicht löschen, wenn der Dateiname einen ungültigen Namen enthält. Der Dateiname hat z. B. ein nachgestelltes Leerzeichen oder einen nachgestellten Zeitraum, oder der Dateiname besteht nur aus einem Leerzeichen. Um dieses Problem zu beheben, verwenden Sie ein Tool, das die entsprechende interne Syntax verwendet, um die Datei zu löschen. Sie können die "\\?\" Syntax mit einigen Tools verwenden, um mit diesen Dateien zu arbeiten. Hier ist ein Beispiel:

del "\\?\c:\<path_to_file_that contains a trailing space.txt>"

Die Ursache dieses Problems ist mit Ursache 4 vergleichbar. Wenn Sie eine Typische Win32-Syntax verwenden, um eine Datei zu öffnen, die nachfolgende Leerzeichen oder nachfolgende Punkte im Namen enthält, werden die nachfolgenden Leerzeichen oder Punkte entfernt, bevor die eigentliche Datei geöffnet wird. Sie haben z. B. zwei Dateien im selben Ordner benannt AFile.txt , und AFile.txt beachten Sie den Speicherplatz hinter dem Dateinamen. Wenn Sie versuchen, die zweite Datei mithilfe von Win32-Standardaufrufen zu öffnen, öffnen Sie stattdessen die erste Datei. Wenn Sie eine Datei haben, deren Name nur ein Leerzeichen ist, und Sie versuchen, sie mithilfe von Win32-Standardaufrufen zu öffnen, öffnen Sie stattdessen den übergeordneten Ordner der Datei. Wenn Sie in dieser Situation versuchen, die Sicherheitseinstellungen für diese Dateien zu ändern, ist dies möglicherweise nicht möglich, oder Sie können die Einstellungen für verschiedene Dateien unerwartet ändern. Wenn dieses Verhalten auftritt, denken Sie möglicherweise, dass Sie über die Berechtigung für eine Datei verfügen, die tatsächlich über eine restriktive ACL verfügt.

Kombinationen von Ursachen

Manchmal können Kombinationen dieser Ursachen auftreten. Dadurch kann die Prozedur zum Löschen einer Datei komplexer werden. Wenn Sie sich beispielsweise als Administrator des Computers anmelden, kann es zu einer Kombination aus Ursache 1 (Sie sind nicht berechtigt, eine Datei zu löschen) und Ursache 5 (der Dateiname enthält ein nachfolgendes Zeichen, das bewirkt, dass der Dateizugriff auf eine andere oder nicht vorhandene Datei umgeleitet wird) auftreten, und Sie können die Datei nicht löschen. Wenn Sie versuchen, Ursache 1 zu beheben, indem Sie die Datei übernehmen und Berechtigungen hinzufügen, können Sie die Datei möglicherweise nicht löschen, da der ACL-Editor auf der Benutzeroberfläche aufgrund von Ursache 6 nicht auf die entsprechende Datei zugreifen kann.

In diesem Fall können Sie das Hilfsprogramm Subinacl mit dem /onlyfile Schalter (dieses Dienstprogramm ist im Resource Kit enthalten) verwenden, um den Besitz und die Berechtigungen für eine Datei zu ändern, auf die andernfalls nicht zugegriffen werden kann. Hier ist ein Beispiel:

subinacl /onlyfile "\\?\c:\<path_to_problem_file>" /setowner= domain\administrator /grant= domain\administrator=F

Hinweis

Dieser Befehl ist eine einzelne Befehlszeile, die zur besseren Lesbarkeit umschlossen wurde.

In dieser Beispiel-Befehlszeile wird die Datei geändert, die C:\<path_to_problem_file> ein nachfolgendes Leerzeichen enthält, sodass das Domänen-/Administratorkonto der Besitzer der Datei ist und dieses Konto die vollständige Kontrolle über die Datei hat. Sie können diese Datei jetzt mithilfe des Befehls "Entf" mit derselben "\\?\" Syntax löschen.