Sie können eine Datei oder einen Ordner auf einem VOLUME des Dateisystems NTFS nicht löschen

In diesem Artikel wird beschrieben, warum eine Datei oder ein Ordner auf einem VOLUME des Dateisystems NTFS nicht gelöscht werden kann. Es bietet auch Hilfe zur Lösung dieses Problems.

Ursprüngliche Produktversion:   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 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 Beliebigen 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 nicht explizit Berechtigungen für die Datei erteilt wurden. Daher müssen Sie möglicherweise den Besitz einer Datei übernehmen, sich selbst die Berechtigung 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 Zugriffssteuerungscl (ACL) verfügt.

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

Die Zugriffssteuerungseinträge (Access Control Entries, ACEs) in einer Zugriffssteuerungssteuerungs-Zugriffs AcEs, die den Zugriff verweigern, kommen beispielsweise in der Regel vor ACEs, die Zugriff gewähren. Allerdings hindert nichts ein Programm am Schreiben einer ACL mit ACEs in beliebiger Reihenfolge. 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 mithilfe des grafischen Sicherheitseditors von Microsoft Windows Explorer nicht ordnungsgemäß ändern. Dieses Problem wurde in späteren Versionen von Windows behoben. Wenn dieses Problem vor sich geht, verwenden Sie die neueste Version Cacls.exe. Auch wenn Sie eine Zugriffssteuerungscl 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 dann diesen Prozess.

Je nachdem, wie die Datei geöffnet wird, können Sie möglicherweise keine Datei löschen, die verwendet wird. Die Datei ist z. B. für exklusiven Zugriff und nicht für gemeinsamen Zugriff geöffnet. Sie können verschiedene Tools verwenden, um die Prozesse mit geöffneten Handles für Dateien zu bestimmen, 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 wieder freigibt. Darüber hinaus können Sie möglicherweise nicht auf das Dialogfeld "Sicherheit" für eine Datei zugreifen, deren Löschvorgang aussteht. Um dieses Problem zu beheben, bestimmen Sie den Prozess mit dem geöffneten Handle, und schließen Sie dann diesen Prozess.

Ursache 3: Dateisystembeschädigung verhindert 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 etwaige Fehler zu beheben.

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

  • Ungültige Sektoren auf dem Datenträger
  • Andere fehlerhafte Hardware
  • Softwarefehler

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

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

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

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 für den Zugriff auf die Datei verwenden. Diese Lö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 wenn 8.3-Namen auf dem Volume deaktiviert wurden, wechseln Sie zu Lösung 2. Weitere Informationen zum Deaktivieren von 8.3-Dateinamen auf NTFS-Volumes finden Sie unter Deaktivieren der Erstellung von 8.3-Namen auf NTFS-Partitionen.

Lösung 2: Umbenennen oder Verschieben eines Tiefenordners

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

Lösung 3: Zuordnung 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 "SubfolderName4" zu.

Lösung 4: Verwenden Sie eine 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 wie möglich in der Ordnerstruktur befindet. Benennen Sie dann die Ordner um, indem Sie auf die Freigabe zugreifen.

Lösung 5: Verwenden sie ein Tool, 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 speichern.

Dieses Problem wird möglicherweise angezeigt, 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 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, mit der sie erstellt werden. Wenn Sie über ein Programm verfügen, mit dem Dateien erstellt werden können, die tiefer liegen als , können Sie in der Regel dasselbe Programm verwenden, um die Dateien MAX_PATH zu löschen oder zu verwalten. Sie können dateien, die in einer Freigabe erstellt werden, in der Regel löschen, indem Sie dieselbe Freigabe verwenden.

Ursache 5: Der Dateiname enthält einen reservierten Namen im Win32-Name-Bereich.

Wenn der Dateiname einen reservierten Namen im Namebereich von Win32 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 #A0 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 zum Angeben des Pfads der Datei verwenden.

Wenn Sie mithilfe des typischen Win32 -CreateFile-Mechanismus ein Handle für eine Datei öffnen, sind bestimmte Dateinamen für ALTESS-Geräte reserviert. Aus Abwärtskompatibilitätsgründen 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 durchgeführt werden, wenn eine Datei erstellt oder gelöscht wird, indem Sie dieselbe Technik verwenden, mit der Sie Ordner tiefer als MAX_PATH durchlaufen. Darüber hinaus unterliegen einige "POSIX"-Tools diesen Namensüberprüfungen nicht.

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

Sie können eine Datei nicht löschen, wenn der Dateiname einen ungültigen Namen enthält. Beispielsweise hat der Dateiname 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 diese Dateien zu bearbeiten. Hier ein Beispiel:

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

Die Ursache dieses Problems ist mit Ursache 4 vergleichbar. Wenn Sie die typische #A0 verwenden, um eine Datei mit nachgestellten Leerzeichen oder nachgestellten Zeiträumen im Namen zu öffnen, werden die nachgestellten Leerzeichen oder Punkte entfernt, bevor die eigentliche Datei geöffnet wird. Sie haben z. B. zwei Dateien im selben Ordner namens und notieren den Abstand AFile.txt AFile.txt nach dem Dateinamen. Wenn Sie versuchen, die zweite Datei mithilfe von standardmäßigen Win32-Aufrufen 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 mit standardmäßigen Win32-Aufrufen zu öffnen, öffnen Sie stattdessen den übergeordneten Ordner der Datei. Wenn Sie in diesem Fall 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 eine eingeschränkte Zugriffssteuerungssteuerungsdatei (ACL) besitzt.

Kombinationen von Ursachen

Manchmal kann es zu Kombinationen dieser Ursachen kommt. Das Verfahren zum Löschen einer Datei kann 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 nachgestelltes Zeichen, das bewirkt, dass der Dateizugriff auf eine andere oder nicht vorhandene Datei umgeleitet wird) angezeigt werden, 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 dennoch 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 Switch (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 /onlyfile kann. Hier 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 Lesbarkeit umbrochen wurde.

In dieser Beispielbefehlszeile wird die Datei mit einem nachgestellten Leerzeichen so geändert, dass das Domänen-/Administratorkonto der Besitzer der Datei ist und dieses Konto über voll ausgestattete Kontrolle über C:\<path_to_problem_file> die Datei verfügt. Sie können diese Datei jetzt mit dem Befehl "Del" mit derselben Syntax "\\?\" löschen.