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 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 Zugriffssteuerungsliste (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 einer Datei zu übernehmen, auch wenn ihnen keine explizite Berechtigung für die Datei gewährt 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 den Besitz einer Datei übernehmen, sich selbst 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 Zugriffssteuerungseinträge (Access Control Entries, ACEs) in einer ACL haben je nach Typ eine bestimmte bevorzugte Sequenz. Beispielsweise treten ACEs, die den Zugriff verweigern, in der Regel vor ACEs ein, die Zugriff gewähren. Nichts hindert ein Programm jedoch daran, eine ACL zu schreiben, die ACEs in beliebiger Reihenfolge aufweist. In einigen früheren Versionen von Windows sind Probleme aufgetreten, als Windows versuchten, 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 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 möglicherweise keine verwendete Datei 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 wann immer gewünscht offene Handles für Dateien haben.

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, in 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 gelöscht werden muss. Um dieses Problem zu beheben, bestimmen Sie den Prozess mit dem geöffneten Handle, und schließen Sie diesen Prozess.

Ursache 3: Eine Beschädigung des Dateisystems 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
  • Andere 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, die Sie zum Ausführen von Chkdsk auffordert. 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 befinden sich in Pfaden, die tiefer als MAX_PATH Zeichen sind

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

Auflö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 auch 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 How to disable the 8.3 name creation on NTFS partitions.

Auflösung 2: Umbenennen oder Verschieben eines Deep-Ordners

Benennen Sie den Ordner um, sodass die Zieldateien, die tiefer sind als MAX_PATH die, nicht mehr vorhanden sind. Wenn Sie dies tun, beginnen Sie mit dem Stammordner oder einem anderen praktischen Ort. Benennen Sie dann Ordner um, sodass 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.

Auflö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 verkürzen, ordnen Sie ein Laufwerk SubfolderName4 zu.

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

Wenn die Auflösungen 1, 2 und 3 nicht praktisch 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.

Auflö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 hat diesen Grenzwert nicht und kann viel längere Pfade enthalten.

Dieses Problem tritt möglicherweise auf, wenn Sie eine Freigabe zu einem bestimmten Zeitpunkt in Ihrer Ordnerstruktur erstellen, die bereits ziemlich tief ist, und dann eine tiefe Struktur unterhalb dieses Punkts erstellen, indem Sie die Freigabe verwenden. 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 spezielle Weise verwenden, damit sie die Freigabe durchlaufen können. In der CreateFile-API-Dokumentation 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 liegen als MAX_PATH , 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 in 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 Überprüfungen des reservierten Win32-Namens 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 Namensüberprüfungen zu umgehen, die beim Erstellen oder Löschen einer Datei durchgeführt werden, indem Sie die gleiche Technik verwenden, um Ordner tiefer als zu MAX_PATH durchlaufen. Darüber hinaus unterliegen einige POSIX-Tools nicht diesen Namensüberprüfungen.

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 nachstehenden 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 verwenden. Hier ist ein Beispiel:

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

Die Ursache für dieses Problem ist vergleichbar mit Der Ursache 4. Wenn Sie eine typische Win32-Syntax verwenden, um eine Datei zu öffnen, die nachfolgende Leerzeichen oder nachfolgende Punkte im Namen aufweist, werden die nachstehenden Leerzeichen oder Punkte entfernt, bevor die eigentliche Datei geöffnet wird. Sie haben z. B. zwei Dateien im selben Ordner namens AFile.txt und AFile.txt notieren das Leerzeichen nach 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 treten möglicherweise Kombinationen dieser Ursachen auf. Das Verfahren zum Löschen einer Datei kann dadurch komplexer werden. Wenn Sie sich beispielsweise als Administrator des Computers anmelden, kann eine Kombination aus Ursache 1 (Sie haben keine Berechtigungen zum Löschen einer Datei) und Ursache 5 (der Dateiname enthält ein nachstehendes 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 den Besitz der 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 6nicht auf die entsprechende Datei zugreifen kann.

In diesem Fall können Sie das Hilfsprogramm Subinacl mit dem /onlyfile Switch verwenden (dieses Hilfsprogramm ist im Resource Kit enthalten), 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

Bei diesem Befehl handelt es sich um eine einzelne Befehlszeile, die zur besseren Lesbarkeit umbrochen wurde.

Mit dieser Beispielbefehlszeile wird die C:\<path_to_problem_file> Datei geändert, die 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 Del-Befehls mit derselben "\\?\" Syntax löschen.