Artikel-id: 320081 - Visa produkter som artikeln gäller.
Visa alla | Dölj alla

På den här sidan

INLEDNING

I den här artikeln beskrivs varför det kanske inte går att ta bort en fil eller mapp på en NTFS-filsystemvolym och hur de olika orsakerna till problemet kan åtgärdas.

Mer Information

Obs! Mappar behandlas internt i NTFS som en särskild filtyp. Därför anger ordet "fil" i den här artikeln antingen en fil eller mapp.

Orsak 1: En ACL används i filen

Det går kanske inte att ta bort en fil om en ACL (Access Control List) används för den. Lös problemet genom att ändra behörigheterna för filen. Du måste kanske bli ägare till filerna för att kunna ändra behörigheterna.

Administratörer har implicit förmåga att bli ägare till alla filer, även om de inte uttryckligen har getts behörighet för filen. Filägare har implicit förmåga att ändra filbehörigheter även om de inte uttryckligen ges någon behörighet för filen. Därför måste du kanske bli ägare till filen, ge dig själv behörighet att ta bort den och sedan ta bort filen.

Det går inte att använda vissa säkerhetsverktyg för att visa eller ändra behörigheter eftersom filen har en icke-kanonisk ACL

Undvik det här problemet genom att använda ett annat verktyg (till exempel en senare build av Cacls.exe).

Åtkomstkontrollposterna i en ACL har en viss standardsekvens beroende på typ. Exempelvis kommer åtkomstkontrollposter som nekar åtkomst före åtkomstkontrollposter som ger åtkomst. Ingenting hindrar emellertid ett program från att skriva en ACL med åtkomstkontrollpunkter i valfri godtycklig sekvens. I vissa tidigare versioner av Windows uppstod det problem när Microsoft Windows försökte läsa dessa "icke-kanoniska" ACL:er. Ibland går det inte att ändra dessa ACL:er på rätt sätt med den grafiska säkerhetsredigeraren i Utforskaren. Problemet har åtgärdats i senare versioner av Windows. Om du drabbas av det här problemet kan du använda den senaste versionen av Cacls.exe. Även om du inte kan visa eller redigera en ACL på plats kan du skriva en ny ACL som ger dig tillgång till filen.

Orsak 2: Filen används

Det går kanske inte att ta bort en fil om den används. Lös problemet genom att ta reda på vilken process som den öppna referensen finns i och stäng sedan processen.

Beroende på hur filen öppnas (den kan till exempel vara öppen för exklusiv i stället för delad åtkomst) går det kanske inte att ta bort en fil som används. Du kan använda en rad olika verktyg för att när som helst ta reda på vilka processer som har öppna referenser till filer. Om du vill veta mer om verktyg för hjälp till processer med öppna referenser till filer klickar du på följande artikelnummer och läser artiklarna i Microsoft Knowledge Base:
242131 Visa en lista över processer med öppna filer (Länken kan leda till en webbplats som är helt eller delvis på engelska)
172710 Använda OH-verktyget på Windows NT 4.0 Resource Kit (Länken kan leda till en webbplats som är helt eller delvis på engelska)
Det här problemet kan visa sig på olika vis. Du kan kanske använda kommandot Ta bort för att ta bort en fil, men filen tas i själva verket inte bort förrän processen där filen är öppen frigör den. Dessutom går det kanske inte att komma åt dialogrutan Säkerhet för en fil som kommer att tas bort. Lös problemet genom att ta reda på vilken process som den öppna referensen finns i och stäng sedan processen.

Orsak 3: Det går inte att komma åt filen eftersom filsystemet är skadat

Det går kanske inte att ta bort filen om filsystemet är skadat. Lös problemet genom att köra verktyget Chkdsk på diskvolymen för att åtgärda eventuella fel.

Skadade sektorer på disken och maskinvaru- eller programfel kan skada filsystemet och försätta filerna i ett problemtillstånd. Typiska operationer kan misslyckas på flera olika sätt. När en skada i filsystemet upptäcks loggas en händelse i händelseloggen, och normalt visas ett meddelande om att Chkdsk ska köras. Beroende på vilken typ av skada det rör sig om går det kanske inte att återställa fildata, men filsystemet återställs till ett internt konsekvent tillstånd. Om du vill veta mer om hur du använder Chkdsk klickar du på följande artikelnummer och läser artiklarna i Microsoft Knowledge Base:
176646 Felmeddelande: Filen eller katalogen är skadad... (Länken kan leda till en webbplats som är helt eller delvis på engelska)
187941 En beskrivning av CHKDSK och de nya /C- och /I-växlarna (Länken kan leda till en webbplats som är helt eller delvis på engelska)

Orsak 4: Det finns filer i sökvägar som är djupare än MAX_PATH-tecken

Det går kanske inte att öppna, redigera eller ta bort en fil om det är problem med filsökvägen.

Lösning 1: Använd ett autogenererat 8.3-namn för att komma åt filen

Du kan kanske lösa problemet genom att använda det autogenererade 8.3-namnet för att komma åt filen. Det kan vara den enklaste lösningen om sökvägen är för djup eftersom mappnamnen är för långa. Om 8.3-sökvägen också är för lång eller om 8.3-namn har inaktiverats på volymen går du till lösning 2. Om du vill veta mer om inaktivering av 8.3-filnamn på NTFS-volymer klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
121007 Aktivera skapande av 8.3-namn på NTFS-partitioner (Länken kan leda till en webbplats som är helt eller delvis på engelska)

Lösning 2: Byt namn på eller flytta en djup mapp

Byt namn på mappen så att målfilerna som ligger djupare än MAX_PATH inte finns längre. Om du gör detta ska du starta vid rotmappen (eller på en annan lämplig plats) och sedan byta namn på mapparna så att de har kortare namn. Om denna åtgärd inte löser problemet (till exempel om en fil är mer än 128 mappar djup) går du till lösning 4.

Lösning 3: Mappa en enhet till en mapp i sökvägens struktur

Mappa en enhet till en mapp inuti strukturen för målfilens eller målmappens sökväg. Denna metod förkortar den virtuella sökvägen.

Anta till exempel att du har en sökväg med följande struktur:
\\Servernamn\Undermappsnamn1\Undermappsnamn2\Undermappsnamn3\Undermappsnamn4\...
I den här sökvägen finns det totalt över 255 tecken. Förkorta sökvägens längd till 73 tecken genom att mappa en enhet till Undermappsnamn4.

Lösning 4: Använd en nätverksresurs som är lika djup som mappen

Om lösning 1, 2 och 3 inte är lämpliga eller inte löser problemet skapar du en nätverksresurs som finns så djupt ner i mappträdet som möjligt. Byt sedan namn på mapparna genom att komma åt resursen.

Lösning 5: Använd ett verktyg som kan klara djupa sökvägar

I många Windows-program förväntas den maximala sökvägslängden vara kortare än 255 tecken. Därför tilldelar dessa program endast tillräckligt internt utrymme för hantering av dessa typiska sökvägar. NTFS saknar denna begränsning och klarar mycket längre sökvägar.

Du kan drabbas av det här problemet om du skapar en resurs någonstans i mappstrukturen som redan är ganska djup och sedan skapar en djup struktur nedanför som pekar med hjälp av resursen. Vissa verktyg som arbetar lokalt på mappträdet kan kanske inte förflytta sig längs med hela trädet med början från roten. Du måste kanske använda dessa verktyg på ett särskilt sätt så att de kan förflytta sig längs resursen. (I CreateFile-API-dokumentationen beskrivs ett sätt att förflytta sig längs hela trädet i den här situationen.)

Normalt kan du hantera filer med hjälp av programvaran som skapar dem. Om du har ett program som kan skapa filer som är djupare än MAX_PATH kan du normalt använda samma program för att ta bort eller hantera filerna. Du kan normalt ta bort filer som skapas på en resurs med hjälp av samma resurs.

Orsak 5: Filnamnet innehåller ett reserverat namn i Win32-namnutrymmet

Om filnamnet innehåller ett reserverat namn (till exempel "lpt1") i Win32-namnutrymmet går det kanske inte att ta bort filen. Lös problemet genom att byta namn på filen med ett icke-Win32-program. Du kan använda ett POSIX-verktyg eller ett annat verktyg med lämplig intern syntax för filen.

Dessutom kan du kanske använda vissa inbyggda kommandon för att kringgå de typiska reserverade Win32-namnkontrollerna om du använder en viss syntax för att ange filens sökväg. Om du till exempel använder Del-kommandot i Windows XP kan du ta bort en fil med namnet "lpt1" om du anger filens fullständiga sökväg med hjälp av följande specialsyntax:
del \\?\c:\sökväg_till_fil\lpt1
Om du vill veta mer om borttagning av filer med reserverade namn i Windows NT och Windows 2000 klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
120716 Ta bort filer med reserverade namn i Windows (Länken kan leda till en webbplats som är helt eller delvis på engelska)
Om du vill veta mer om borttagning av filer med reserverade namn i Windows XP klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
315226 Ta bort filer med reserverade namn i Windows XP
Om du öppnar en referens till en fil med hjälp av den typiska Win32 CreateFile-mekanismen är vissa filnamn reserverade för DOS-enheter av äldre typ. För att säkerställa bakåtkompatibilitet tillåts inte dessa filnamn och kan inte skapas med hjälp av typiska Win32-filanrop. Detta problem är emellertid inte någon begränsning hos NTFS.

Du kan kanske använda ett Win32-program för att kringgå de typiska namnkontrollerna som utförs när en fil skapas (eller tas bort) med hjälp av samma teknik som du använder för att bläddra i mappar som är djupare än MAX_PATH. Dessutom är vissa POSIX-verktyg inte underkastade dessa namnkontroller.

Orsak 6: Filnamnet innehåller ett ogiltigt namn i Win32-namnutrymmet

Det går kanske inte att ta bort en fil om filnamnet innehåller ett ogiltigt namn (filnamnet har till exempel ett följande blanksteg eller punkt, eller består endast av ett blanksteg). Lös problemet genom att använda ett verktyg där lämplig intern syntax används för att ta bort filen. Du kan använda syntaxen "\\?\" i vissa verktyg för att arbeta med dessa filer, som exempelvis här:
del "\\?\c:\sökväg_till_fil_med ett följande blanksteg.txt "
Orsaken till det här problemet liknar orsak 4. Om du använder typisk Win32-syntax för att öppna en fil med följande blanksteg eller punkter i namnet tas dessa emellertid bort innan själva filen öppnas. Om du har två filer i samma mapp med namnen "AFile.txt" och "AFile.txt " (observera blanksteget efter filnamnet), och du försöker öppna den andra filen med Win32-standardanrop, öppnas därför den första filen i stället. Om du har en fil med bara " " (blanksteg) som namn och försöker öppna den med Win32-standardanrop öppnas på liknande sätt filens överordnade mapp i stället. Om du i den här situationen försöker ändra säkerhetsinställningarna för de här filerna går det kanske inte, eller så kan du oväntat ändra inställningarna för olika filer. Om detta inträffar kan det verka som om du har behörighet för en fil som i själva verket har en restriktiv ACL.

Kombinationer av orsaker

Ibland kan du drabbas av kombinationer av dessa orsaker, vilket kan göra det mer komplicerat att ta bort en fil. Om du till exempel loggar in som datoradministratör kan du uppleva en kombination av orsak 1 (du har inte behörighet att ta bort en fil) och orsak 5 (filnamnet innehåller ett efterföljande tecken som medför att filåtkomsten dirigeras om till en annan eller obefintlig fil), och du kan kanske inte ta bort filen. Om du försöker åtgärda orsak 1 genom att bli ägare till filen och lägga till behörigheter, kan du kanske ändå inte ta bort filen eftersom ACL-redigeraren i användargränssnittet inte kan komma åt rätt fil på grund av orsak 6.

I det här fallet kan du använda Subinacl-verktyget med /onlyfile-växeln (detta verktyg ingår i Resource Kit) för att ändra ägande och behörigheter för en fil som annars inte är tillgänglig. Ett exempel:
subinacl /onlyfile "\\?\c:\sökväg_till_problemfil" /setowner=domän\administratör /grant=domän\administratör=F
Obs! Detta kommando är en enda kommandorad som har radbrutits för att bli mer lättläst.

Denna exempelkommandorad ändrar C:\sökväg_till_problemfil-filen som innehåller ett följande blanksteg så att domän\administratör-kontot blir ägare till filen och detta konto har fullständig kontroll över filen. Du kan nu ta bort filen med hjälp av Del-kommandot med samma "\\?\"-syntax.

Referenser

Om du vill veta mer klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
319368 Felmeddelandet "Åtkomst nekad" visas vid borttagning av mappar från en monterad enhet (Länken kan leda till en webbplats som är helt eller delvis på engelska)

Egenskaper

Artikel-id: 320081 - Senaste granskning: den 3 december 2007 - Revision: 7.4
Informationen i denna artikel gäller:
  • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
  • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Web Edition
  • Microsoft Windows Small Business Server 2003 Premium Edition
  • Microsoft Windows Small Business Server 2003 Standard Edition
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows XP Home Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows Advanced Server, Limited Edition
  • Microsoft Windows Datacenter Server Limited Edition
Nyckelord: 
kbinfo kbfilesystems KB320081

Ge feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com