Sie können eine Datei oder einen Ordner auf einem NTFS-Dateisystemvolume nicht 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 das Wort Datei 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 List (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, den Besitz jeder 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 wurden. Daher müssen Sie möglicherweise den Besitz einer Datei übernehmen, sich die Berechtigungen zum Löschen der Datei erteilen und dann die Datei löschen.

Sie können bestimmte Sicherheitstools nicht zum Anzeigen oder Ändern von Berechtigungen verwenden, 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 Entries (ACEs) in einer ACL weisen je nach Typ eine bestimmte bevorzugte Sequenz auf. Beispielsweise treten ACEs, die den Zugriff verweigern, in der Regel vor ACEs, die Zugriff gewähren. Nichts hindert ein Programm jedoch daran, eine ACL zu schreiben, die ACEs in beliebiger Reihenfolge enthält. In einigen früheren Versionen von Windows sind Probleme aufgetreten, als Windows versuchte, diese nicht kanonischen ACLs zu lesen. Manchmal können Sie diese ACLs nicht ordnungsgemäß ändern, indem Sie den grafischen Sicherheits-Editor von Microsoft Windows Explorer verwenden. Dieses Problem wurde in späteren Versionen von Windows behoben. Wenn dieses Problem aufgetreten ist, verwenden Sie die neueste Version von Cacls.exe. Auch wenn Sie eine ACL nicht 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. Beispielsweise ist die Datei für den exklusiven Zugriff anstelle des freigegebenen Zugriffs geöffnet. Sie können verschiedene Tools verwenden, um die Prozesse zu bestimmen, die über geöffnete Handles für Dateien verfügen, wann immer Sie möchten.

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 freigegeben hat. Darüber hinaus können Sie möglicherweise nicht auf das Dialogfeld Sicherheit für eine Datei zugreifen, deren Löschung 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 Hilfsprogramm 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
  • Sonstige fehlerhafte Hardware
  • Softwarefehler

Typische Vorgänge können auf verschiedene Arten 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.

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

Um dieses Problem zu beheben, sollten 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 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 sind, nicht mehr vorhanden sind. Wenn Sie dies tun, beginnen Sie im Stammordner oder an einem anderen geeigneten Ort. Benennen Sie dann Ordner so um, dass sie kürzere Namen haben. Wenn dieses Problem durch diesen Schritt nicht behoben wird, z. B. wenn 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 verfügen über einen Pfad, der wie folgt strukturiert ist:

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

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

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

Wenn die Lösungen 1, 2 und 3 nicht geeignet sind oder das Problem nicht beheben, erstellen Sie eine Netzwerkfreigabe, die sich so tief in der Ordnerstruktur befindet wie möglich. 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 ist. Diese Programme weisen nur genügend internen Speicher zu, um diese typischen Pfade zu verarbeiten. NTFS verfügt nicht über diesen Grenzwert und kann viel längere Pfade enthalten.

Dieses Problem kann auftreten, wenn Sie an einem bestimmten Punkt in Ihrer Ordnerstruktur eine Freigabe erstellen, die bereits ziemlich tief ist, und dann eine tiefe Struktur unterhalb dieses Punkts mithilfe der Freigabe erstellen. Einige Tools, die lokal in der Ordnerstruktur arbeiten, können möglicherweise nicht die gesamte Struktur ab dem Stamm durchlaufen. Möglicherweise müssen Sie diese Tools auf besondere Weise verwenden, damit sie die Freigabe durchlaufen können. In der Dokumentation zur CreateFile-API wird eine Methode zum Durchlaufen der gesamten Struktur in dieser Situation beschrieben.

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. In der Regel können Sie 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 verwendet, um die Datei zu verwenden.

Darüber hinaus können Sie einige integrierte Befehle verwenden, um die typischen Reservierten Win32-Namensprü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 mit typischen Win32-Dateiaufrufen erstellt werden. Dieses Problem ist keine Einschränkung von NTFS.

Sie können ein Win32-Programm verwenden, um die typischen Namensprüfungen zu umgehen, die beim Erstellen oder Löschen einer Datei durchgeführt werden, indem Sie dieselbe Technik verwenden, die Sie zum Durchlaufen von Ordnern verwenden, die tiefer als MAX_PATHsind. Darüber hinaus unterliegen einige POSIX-Tools diesen Namensprü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. Beispielsweise weist der Dateiname ein nachfolgendes Leerzeichen oder einen nachfolgenden Punkt auf, 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 diese Dateien zu verarbeiten. Hier ist ein Beispiel:

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

Die Ursache dieses Problems ist ähnlich wie Ursache 4. Wenn Sie eine Datei mit der typischen Win32-Syntax öffnen, die im Namen nachgestellte Leerzeichen oder nachgestellte Punkte enthält, werden die nachfolgenden Leerzeichen oder Punkte entfernt, bevor die eigentliche Datei geöffnet wird. Sie verfügen beispielsweise über zwei Dateien im selben Ordner namens AFile.txt und AFile.txt , beachten Sie das Leerzeichen hinter dem Dateinamen. Wenn Sie versuchen, die zweite Datei mithilfe von Win32-Standardaufrufen zu öffnen, öffnen Sie stattdessen die erste Datei. Wenn Sie über eine Datei verfügen, 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 diesem Fall versuchen, die Sicherheitseinstellungen für diese Dateien zu ändern, können Sie dies möglicherweise nicht tun, oder Sie können die Einstellungen für verschiedene Dateien unerwartet ändern. Wenn dieses Verhalten auftritt, denken Sie vielleicht, dass Sie über die Berechtigung für eine Datei verfügen, die tatsächlich über eine restriktive ACL verfügt.

Ursachenkombinationen

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, tritt möglicherweise eine Kombination aus Ursache 1 (Sie haben keine Berechtigungen zum Löschen einer Datei) und Ursache 5 (der Dateiname enthält ein nachfolgendes Zeichen, das dazu führt, dass der Dateizugriff auf eine andere oder nicht vorhandene Datei umgeleitet wird), und Sie können die Datei nicht löschen. Wenn Sie versuchen, Ursache 1 zu beheben, indem Sie den Besitz der Datei übernehmen und Berechtigungen hinzufügen, können Sie die Datei möglicherweise trotzdem 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 Hilfsprogramm 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 aus Gründen der Lesbarkeit umschlossen wurde.

Diese Beispielbefehlszeile ändert die Datei, die C:\<path_to_problem_file> einen nachgestellten Speicherplatz enthält, sodass das Konto domäne\administrator der Besitzer der Datei ist und dieses Konto die vollständige Kontrolle über die Datei hat. Sie können diese Datei jetzt löschen, indem Sie den Befehl Entf mit der gleichen "\\?\" Syntax verwenden.