U kunt een bestand of map op een NTFS-bestandssysteemvolume niet verwijderen

In dit artikel wordt beschreven waarom een bestand of map op een NTFS-bestandssysteemvolume niet kan worden verwijderd. Het biedt ook hulp bij het oplossen van dit probleem.

Van toepassing op: Windows Server 2012 R2
Origineel KB-nummer: 320081

Opmerking

Intern behandelt NTFS mappen als een speciaal type bestand. Daarom geeft het woordbestand in dit artikel een bestand of map aan.

Oorzaak 1: Het bestand gebruikt een ACL

U kunt een bestand niet verwijderen als het bestand een Access Control List (ACL) gebruikt. U kunt dit probleem oplossen door de machtigingen voor het bestand te wijzigen. Mogelijk moet u eigenaar worden van de bestanden om de machtigingen te wijzigen.

Beheerders hebben de impliciete mogelijkheid om eigenaar te worden van een bestand, zelfs als ze geen expliciete machtiging voor het bestand hebben gekregen. Bestandseigenaren hebben de impliciete mogelijkheid om bestandsmachtigingen te wijzigen, zelfs als ze geen expliciete machtigingen voor het bestand hebben. Mogelijk moet u dus eigenaar worden van een bestand, uzelf machtigingen geven om het bestand te verwijderen en vervolgens het bestand verwijderen.

U kunt bepaalde beveiligingshulpprogramma's niet gebruiken om machtigingen weer te geven of te wijzigen, omdat het bestand een niet-canonieke ACL heeft

U kunt dit probleem omzeilen door een ander hulpprogramma te gebruiken (bijvoorbeeld een latere build van Cacls.exe).

De Access Control vermeldingen (ACL's) in een ACL hebben een bepaalde voorkeursvolgorde, afhankelijk van het type. ACL's die toegang weigeren, komen bijvoorbeeld meestal vóór ACL's die toegang verlenen. Niets verhindert echter dat een programma een ACL schrijft met ACL's in willekeurige volgorde. In sommige eerdere versies van Windows zijn er problemen opgetreden wanneer Windows deze niet-canonieke ACL's probeerde te lezen. Soms kunt u deze ACL's niet correct wijzigen met behulp van de grafische beveiligingseditor van Microsoft Windows Verkenner. Dit probleem is opgelost in latere versies van Windows. Als u dit probleem ondervindt, gebruikt u de meest recente versie van Cacls.exe. Zelfs als u een ACL niet kunt weergeven of bewerken, kunt u een nieuwe ACL schrijven om toegang te krijgen tot het bestand.

Oorzaak 2: het bestand wordt gebruikt

U kunt een bestand niet verwijderen als het bestand wordt gebruikt. U kunt dit probleem oplossen door het proces met de geopende ingang te bepalen en dit proces te sluiten.

Afhankelijk van hoe het bestand wordt geopend, kunt u een bestand dat wordt gebruikt mogelijk niet verwijderen. Het bestand is bijvoorbeeld geopend voor exclusieve toegang in plaats van gedeelde toegang. U kunt verschillende hulpprogramma's gebruiken om de processen te bepalen die open ingangen voor bestanden hebben wanneer u maar wilt.

De symptomen van dit probleem kunnen variëren. U kunt de opdracht Verwijderen gebruiken om een bestand te verwijderen. Het bestand wordt echter pas verwijderd als het bestand is geopend. Bovendien hebt u mogelijk geen toegang tot het dialoogvenster Beveiliging voor een bestand dat in behandeling is om te worden verwijderd. U kunt dit probleem oplossen door het proces met de geopende ingang te bepalen en dit proces te sluiten.

Oorzaak 3: Beschadiging van het bestandssysteem verhindert toegang tot het bestand

U kunt het bestand niet verwijderen als het bestandssysteem beschadigd is. U kunt dit probleem oplossen door het hulpprogramma Chkdsk uit te voeren op het schijfvolume om eventuele fouten te corrigeren.

De volgende redenen kunnen het bestandssysteem beschadigen en bestanden in een problematische status plaatsen:

  • Slechte sectoren op de schijf
  • Andere defecte hardware
  • Softwarefouten

Typische bewerkingen kunnen op verschillende manieren mislukken. Wanneer het bestandssysteem beschadiging detecteert, registreert het een gebeurtenis in het gebeurtenislogboek en ontvangt u meestal een bericht waarin u wordt gevraagd om Chkdsk uit te voeren. Afhankelijk van de aard van de beschadiging kan Chkdsk wel of niet bestandsgegevens herstellen. Chkdsk retourneert het bestandssysteem echter naar een intern consistente status.

Oorzaak 4: Bestanden bestaan in paden die dieper zijn dan MAX_PATH tekens

U kunt een bestand niet openen, bewerken of verwijderen als er problemen zijn met het bestandspad.

Oplossing 1: een automatisch gegenereerde 8.3-naam gebruiken om toegang te krijgen tot het bestand

U kunt dit probleem oplossen door de automatisch gegenereerde 8.3-naam te gebruiken voor toegang tot het bestand. Deze oplossing kan de eenvoudigste oplossing zijn als het pad diep is omdat de mapnamen te lang zijn. Als het pad 8.3 ook te lang is of als 8.3-namen zijn uitgeschakeld op het volume, gaat u naar Oplossing 2. Zie How to disable the 8.3 name creation on NTFS partitions (Het maken van 8.3-namen uitschakelen op NTFS-partities) voor meer informatie over het uitschakelen van 8.3-bestandsnamen op NTFS-volumes.

Oplossing 2: de naam van een diepe map wijzigen of verplaatsen

Wijzig de naam van de map zodat de doelbestanden die dieper zijn dan de MAX_PATH niet meer bestaan. Als u dit doet, begint u in de hoofdmap of op een andere handige plaats. Wijzig vervolgens de naam van mappen zodat ze kortere namen hebben. Als deze stap dit probleem niet oplost, bijvoorbeeld als een bestand meer dan 128 mappen diep is, gaat u naar Oplossing 4.

Oplossing 3: Een station toewijzen aan een map in de structuur van het pad

Wijs een station toe aan een map in de structuur van het pad van het doelbestand of de doelmap. Met deze methode wordt het virtuele pad verkort.

Stel dat u een pad hebt dat als volgt is gestructureerd:

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

In dit pad is het totale aantal tekens meer dan 255 tekens. Als u de lengte van dit pad wilt verkorten tot 73 tekens, wijst u een station toe aan SubmapName4.

Oplossing 4: Gebruik een netwerkshare die zo diep is als de map

Als de oplossingen 1, 2 en 3 niet handig zijn of het probleem niet oplossen, maakt u een netwerkshare die zich zo diep mogelijk in de mappenstructuur bevindt. Wijzig vervolgens de naam van de mappen door de share te openen.

Oplossing 5: Een hulpprogramma gebruiken dat diepe paden kan doorlopen

Veel Windows-programma's verwachten dat de maximale padlengte korter is dan 255 tekens. Deze programma's wijzen alleen voldoende interne opslag toe om deze typische paden te verwerken. NTFS heeft deze limiet niet en kan veel langere paden bevatten.

Dit probleem kan optreden als u op een bepaald moment in uw mappenstructuur een share maakt die al redelijk diep is en vervolgens een diepe structuur onder dat punt maakt met behulp van de share. Sommige hulpprogramma's die lokaal worden uitgevoerd in de mapstructuur, kunnen mogelijk niet de hele structuur doorkruisen vanaf de hoofdmap. Mogelijk moet u deze hulpprogramma's op een speciale manier gebruiken, zodat ze de share kunnen doorkruisen. In de documentatie van de CreateFile-API wordt een methode beschreven om in deze situatie de hele structuur te doorlopen.

Normaal gesproken kunt u bestanden beheren met behulp van de software waarmee ze worden gemaakt. Als u een programma hebt waarmee bestanden kunnen worden gemaakt die dieper zijn dan MAX_PATH, kunt u datzelfde programma doorgaans gebruiken om de bestanden te verwijderen of te beheren. U kunt bestanden die zijn gemaakt op een share doorgaans verwijderen met dezelfde share.

Oorzaak 5: De bestandsnaam bevat een gereserveerde naam in de Win32-naamruimte

Als de bestandsnaam een gereserveerde naam bevat in de Win32-naamruimte, zoals lpt1, kunt u het bestand niet verwijderen. U kunt dit probleem oplossen door een niet-Win32-programma te gebruiken om de naam van het bestand te wijzigen. U kunt een POSIX-hulpprogramma of een ander hulpprogramma gebruiken dat de juiste interne syntaxis gebruikt om het bestand te gebruiken.

Daarnaast kunt u een aantal ingebouwde opdrachten gebruiken om de gebruikelijke gereserveerde win32-naamcontroles te omzeilen als u een bepaalde syntaxis gebruikt om het pad van het bestand op te geven.

Als u een ingang naar een bestand opent met behulp van het typische Win32 CreateFile-mechanisme, worden bepaalde bestandsnamen gereserveerd voor DOS-apparaten met een oude stijl. Voor achterwaartse compatibiliteit zijn deze bestandsnamen niet toegestaan en kunnen ze niet worden gemaakt met behulp van typische Win32-bestandsoproepen. Dit probleem is geen beperking van NTFS.

U kunt een Win32-programma gebruiken om de gebruikelijke naamcontroles te omzeilen die worden uitgevoerd wanneer een bestand wordt gemaakt of verwijderd met behulp van dezelfde techniek die u gebruikt om mappen dieper te doorlopen dan MAX_PATH. Bovendien zijn sommige POSIX-hulpprogramma's niet onderworpen aan deze naamcontroles.

Oorzaak 6: De bestandsnaam bevat een ongeldige naam in de Win32-naamruimte

U kunt een bestand niet verwijderen als de bestandsnaam een ongeldige naam bevat. De bestandsnaam heeft bijvoorbeeld een volgspatie of een volgperiode, of de bestandsnaam bestaat alleen uit een spatie. U kunt dit probleem oplossen door een hulpprogramma te gebruiken dat gebruikmaakt van de juiste interne syntaxis om het bestand te verwijderen. U kunt de "\\?\" syntaxis met sommige hulpprogramma's gebruiken om op deze bestanden te werken. Hier volgt een voorbeeld:

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

De oorzaak van dit probleem is vergelijkbaar met oorzaak 4. Als u de typische Win32-syntaxis gebruikt om een bestand te openen met volgspaties of volgperioden in de naam, worden de volgspaties of punten verwijderd voordat het werkelijke bestand wordt geopend. U hebt bijvoorbeeld twee bestanden in dezelfde map met de naam AFile.txt en AFile.txt , let op de spatie na de bestandsnaam. Als u het tweede bestand probeert te openen met behulp van standaard Win32-aanroepen, opent u in plaats daarvan het eerste bestand. Als u een bestand hebt waarvan de naam slechts een spatieteken is en u probeert het te openen met behulp van standaard Win32-aanroepen, opent u in plaats daarvan de bovenliggende map van het bestand. Als u in dit geval de beveiligingsinstellingen voor deze bestanden probeert te wijzigen, kunt u dit mogelijk niet doen of kunt u de instellingen voor verschillende bestanden onverwacht wijzigen. Als dit gedrag optreedt, denkt u misschien dat u bent gemachtigd voor een bestand dat daadwerkelijk een beperkende ACL heeft.

Combinaties van oorzaken

Soms kunt u combinaties van deze oorzaken ervaren. Het kan de procedure voor het verwijderen van een bestand complexer maken. Als u zich bijvoorbeeld aanmeldt als beheerder van de computer, kan er een combinatie optreden van oorzaak 1 (u bent niet gemachtigd om een bestand te verwijderen) en oorzaak 5 (de bestandsnaam bevat een volgteken waardoor bestandstoegang wordt omgeleid naar een ander of niet-bestaand bestand) en u kunt het bestand niet verwijderen. Als u oorzaak 1 probeert op te lossen door eigenaar te worden van het bestand en machtigingen toe te voegen, kunt u het bestand mogelijk nog steeds niet verwijderen, omdat de ACL-editor in de gebruikersinterface geen toegang heeft tot het juiste bestand vanwege oorzaak 6.

In dit geval kunt u het hulpprogramma Subinacl gebruiken met de /onlyfile switch (dit hulpprogramma is opgenomen in de Resource Kit) om het eigendom en de machtigingen te wijzigen voor een bestand dat anders niet toegankelijk is. Hier volgt een voorbeeld:

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

Opmerking

Deze opdracht is één opdrachtregel die is verpakt voor leesbaarheid.

Met deze voorbeeldopdrachtregel wijzigt u het C:\<path_to_problem_file> bestand dat een volgruimte bevat, zodat het domein\administrator-account de eigenaar van het bestand is en dit account volledige controle over het bestand heeft. U kunt dit bestand nu verwijderen met behulp van de del-opdracht met dezelfde "\\?\" syntaxis.