Artikkel-ID: 320081 - Vis produkter som denne artikkelen gjelder for.
Vis alt | Skjul alt

På denne siden

INNLEDNING

Denne artikkelen beskriver hvorfor du kanskje ikke kan slette en fil eller mappe på et NTFS-filsystemvolum, og hvordan du fastslår de ulike årsakene for å løse problemet.

Mer informasjon

Obs!  Internt behandler NTFS mapper som en spesiell type fil. Ordet "fil" i denne artikkelen angir derfor enten en fil eller en mappe.

Årsak 1: Filen bruker en tilgangskontrolliste

Du kan kanskje ikke slette en fil hvis filen bruker en tilgangskontrolliste (ACL). Du kan løse dette problemet ved å endre tillatelsene for filen. Du må kanskje bli eier av filene for å kunne endre tillatelsene.

Administratorer har en underforstått mulighet til å bli eier av enhver fil selv om de ikke uttrykkelig er gitt tillatelse til filen. Fileiere har en underforstått mulighet til å endre filtillatelsene selv om de ikke uttrykkelig er gitt tillatelser til filen. Det kan derfor hende at du må bli eier av en fil, gi deg selv tillatelser til å slette filen, og deretter slette den.

Du kan ikke bruke bestemte sikkerhetsverktøy til å vise eller endre tillatelsene fordi filen har en tilgangskontrolliste som ikke er kanonisk

Du kan omgå dette problemet ved å bruke et annet verktøy (for eksempel en senere versjon av Cacls.exe).

Tilgangskontrolloppføringene (ACE) i en tilgangskontrolliste har en bestemt foretrukket rekkefølge avhengig av typen. Tilgangskontrolloppføringer som nekter tilgang, kommer for eksempel vanligvis foran tilgangskontrolloppføringer som gir tilgang. Det er imidlertid ingenting som hindrer et program i å skrive en tilgangskontrolliste som har tilgangskontrolloppføringer i en tilfeldig rekkefølge. I noen tidligere versjoner av Windows oppstod det problemer under forsøk på å lese disse "ikke-kanoniske" tilgangskontrollistene. Noen ganger kan du ikke endre disse tilgangskontrollistene på riktig måte ved hjelp av det grafiske sikkerhetsredigeringsprogrammet i Microsoft Windows Utforsker. Dette problemet er løst i senere versjoner av Windows. Hvis dette problemet oppstår, bruker du den siste versjonen av Cacls.exe. Selv om du ikke kan vise eller redigere en tilgangskontrolliste på stedet, kan du skrive en ny tilgangskontrolliste som gir deg tilgang til filen.

Årsak 2: Filen er i bruk

Du kan kanskje ikke slette en fil hvis den er i bruk. Hvis du vil løse dette problemet, fastslår du hvilken prosess som har den åpne referansen, og deretter lukker du denne prosessen.

Avhengig av hvordan filen er åpnet (den er for eksempel åpen for alenetilgang i stedet for delt tilgang), er det ikke sikkert du kan slette en fil som er i bruk. Du kan bruke mange ulike verktøy for å hjelpe deg med å fastlå hvilke prosesser som har åpne referanser til filer. Hvis du vil ha mer informasjon om verktøy som skal hjelpe prosessene som har åpne referanser til filer, kan du klikke følgende artikkelnumre for å vise artiklene i Microsoft Knowledge Base:
242131 Vise en liste over prosesser som har åpne filer (denne artikkelen kan være på engelsk)
172710 Bruke OH-verktøyet på Windows NT 4.0 Resource Kit (denne artikkelen kan være på engelsk)
Symptomene på dette problemet kan variere. Det kan hende du kan bruke Slett-kommandoen til å slette en fil, men filen slettes ikke før prosessen som har filen åpen, frigir filen. Det kan også hende at du ikke kan få tilgang til dialogboksen Sikkerhet for en fil som venter på sletting. Hvis du vil løse dette problemet, fastslår du hvilken prosess som har den åpne referansen, og deretter lukker du denne prosessen.

Årsak 3: Feil i filsystemet hindrer tilgang til filen

Det kan hende at du ikke kan slette filen hvis filsystemet er skadet. Du kan løse dette problemet ved å kjøre Chkdsk-verktøyet på diskvolumet for å løse eventuelle feil.

Skadede sektorer på disken, andre maskin- eller programvarefeil kan skade filsystemet og sette filen i en problematisk tilstand. Vanlige operasjoner kan mislykkes på flere ulike måter. Når filsystemet oppdager feil, logges det en hendelse i hendelsesloggen, og du får vanligvis en melding om å kjøre Chkdsk. Avhengig av typen feil kan det hende at du kan gjenopprette fildataene ved hjelp av Chkdsk. Chkdsk returnerer imidlertid filsystemet til en internt konsekvent tilstand. Hvis du vil ha mer informasjon om hvordan du bruker Chkdsk-verktøyet, kan du klikke artikkelnumrene nedenfor for å vise artiklene i Microsoft Knowledge Base:
176646 Feilmelding: Filen eller katalogen er skadet... (denne artikkelen kan være på engelsk)
187941 En forklaring av CHKDSK og bryterne New /C og /I (denne artikkelen kan være på engelsk)

Årsak 4: Det finnes filer i baner som er dypere enn MAX_PATH-tegnene

Det er ikke sikkert at du kan åpne, redigere eller slette en fil hvis det er problemer med filbanen.

Løsning 1: Bruk et automatisk generert 8.3-navn for å få tilgang til filen

Du kan løse dette problemet ved å bruke det automatisk genererte 8.3-navnet for å få tilgang til filen. Denne løsningen kan være den enkleste hvis banen er dyp fordi mappenavnene er for lange. Hvis 8.3-banen også er for lang, eller hvis 8.3-navn er deaktivert på volumet, går du til løsning 2. Hvis du vil ha mer informasjon om hvordan du deaktiverer oppretting av 8.3-filnavn på NTFS-volumer, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
121007 Deaktivere oppretting av 8.3-navn på NTFS-partisjoner (denne artikkelen kan være på engelsk)

Løsning 2: Gi nytt navn til eller flytt en dyp mappe

Gi nytt navn til mappen slik at målfilene som er dypere enn MAX_PATH, ikke lenger finnes. Hvis du gjør dette, starter du i rotmappen (eller et annet passende sted), og deretter gir du nytt navn til mappene slik at de har kortere navn. Hvis dette trinnet ikke løser problemet (for eksempel hvis en fil er mer enn 128 mapper dyp), går du til løsning 4.

Løsning 3: Tilordne en stasjon til en mappe i banestrukturen

Tilordne en stasjon til en mappe i banestrukturen for målfilen eller -mappen. Denne metoden forkorter den virtuelle banen.

Sett at du for eksempel har en bane som er strukturert på følgende måte:
\\Servernavn\Navn på undermappe1\Navn på undermappe2\Navn på undermappe3\Navn på undermappe4\...
I denne banen overskrider det totale antallet tegn 255. Hvis du vil forkorte lengden på denne banen til 73 tegn, tilordner du en stasjon til Navn på undermappe4.

Løsning 4: Bruk en delt nettverksressurs som er like dyp som mappen

Hvis løsning 1, 2 og 3 ikke passer eller ikke løser problemet, oppretter du en delt nettverksressurs så dypt som mulig i mappetreet, og deretter gir du nytt navn til mappene ved å få tilgang til den delte ressursen.

Løsning 5: Bruk et verktøy som kan bla gjennom dype baner

Mange Windows-programmer forventer at minimum banelengde er kortere enn 255 tegn. Disse programmene tildeler derfor bare nok intern lagring til å håndtere disse vanlige banene. NTFS har ikke denne begrensningen og kan ha mye lengre baner.

Dette problemet kan oppstå hvis du oppretter en delt ressurs på et punkt i mappestrukturen som allerede er ganske dypt, og deretter oppretter en dyp struktur under disse punktene ved hjelp av den delte ressursen. Noen verktøy som brukes lokalt i mappetreet, kan kanskje ikke bla gjennom hele treet fra roten. Det kan hende du må bruke disse verktøyene på en spesiell måte slik at de kan bla gjennom den delte ressursen. (CreateFile API-dokumentasjonen beskriver en metode for å bla gjennom hele treet i denne situasjonen.)

Du kan vanligvis behandle filer ved hjelp av programvaren de opprettes i. Hvis du har et program som du kan bruke til å opprette filer som er dypere enn MAX_PATH, kan du vanligvis bruke dette programmet til å slette eller behandle filene. Du kan vanligvis slette filer som er opprettet på en delt ressurs, ved å bruke den samme ressursen.

Årsak 5: Filnavnet inneholder et reservert navn i Win32-navneområdet

Hvis filnavnet inneholder et reservert navn (for eksempel "lpt1") i Win32-navneområdet, er det ikke sikkert du kan slette filen. Du kan løse dette problemet ved å bruke et annet program enn et Win32-program til å gi nytt navn til filen. Du kan bruke et POSIX-verktøy eller et annet verktøy som bruker den riktige interne syntaksen, til å bruke filen.

I tillegg kan du kanskje bruke enkelte innebygde kommandoer til å omgå de vanlige Win32-reserverte navnekontrollene hvis du bruker en bestemt syntaks til å angi banen til filen. Hvis du for eksempel bruker Del-kommandoen i Windows XP, kan du slette en fil kalt "lpt1" hvis du angir den fullstendige banen til filen ved å bruke følgende spesielle syntaks:
del \\?\c:\bane_til_fil\lpt1
Hvis du vil ha mer informasjon om hvordan du sletter filer med reserverte navn under Windows NT og Windows 2000, kan du klikke artikkelnummeret nedenfor for å vise artikkelen i Microsoft Knowledge Base:
120716 Fjerne filer med reserverte navn i Windows (denne artikkelen kan være på engelsk)
Hvis du vil ha mer informasjon om hvordan du sletter filer med reserverte navn under Windows XP, kan du klikke artikkelnummeret nedenfor for å vise artikkelen i Microsoft Knowledge Base:
315226 Fjerne filer med reserverte navn i Windows XP (denne artikkelen kan være på engelsk)
Hvis du åpner en referanse til en fil ved å bruke den vanlige Win32 CreateFile-mekanismen, reserveres bestemte filnavn for gamle DOS-enheter. For å gi bakoverkompatibilitet tillates ikke disse filnavnene, og de kan ikke opprettes ved å bruke vanlige Win32-filkall. Dette problemet er imidlertid ikke en begrensning av NTFS.

Du kan kanskje bruke et Win32-program til å omgå de vanlige navnekontrollene som utføres når en fil opprettes (eller slettes), ved å bruke den samme teknikken som du bruker til å bla gjennom mapper som er dypere enn MAX_PATH. I tillegg er det noen POSIX-verktøy som ikke er underlagt disse navnekontrollene.

Årsak 6: Filnavnet inneholder et ugyldig navn i Win32-navneområdet

Det er ikke sikkert du kan slette en fil hvis filnavnet inneholder et ugyldig navn (filnavnet har for eksempel et etterfølgende mellomrom eller et etterfølgende punktum, eller filnavnet består av bare et mellomrom). Du kan løse dette problemet ved å bruke et verktøy som bruker den riktige interne syntaksen for å slette filen. Du kan bruke "\\?\"-syntaksen med noen verktøy for bruk på disse filene, for eksempel:
del "\\?\c:\bane_til_fil_som inneholder et etterfølgende mellomrom.txt "
Årsaken til dette problemet er lik årsak 4. Hvis du imidlertid bruker vanlig Win32-syntaks til å åpne en fil som har etterfølgende mellomrom eller etterfølgende punktum i navnet, fjernes de etterfølgende mellomrommene eller punktumene før den faktiske filen åpnes. Hvis du har to filer i den samme mappen kalt "AFile.txt" og "AFile.txt " (merk mellomrommet etter filnavnet), og du prøver å åpne den andre filen ved å bruke standard Win32-kall, åpner du derfor den første filen i stedet. Hvis du har en fil som bare kalles " " (et mellomromstegn), og du prøver å åpne den ved å bruke standard Win32-kall, åpner du i stedet den overordnede mappen for filen. Hvis du i slike situasjoner prøver å endre sikkerhetsinnstillingene for disse filene, kan det hende at du ikke kan gjøre dette, eller du kan uventet endre innstillingene for forskjellige filer. Hvis dette problemet oppstår, vil du kanskje tro at du har tillatelse til en fil som egentlig har en restriktiv tilgangskontrolliste.

Kombinasjoner av årsaker

Noen ganger kan det oppstå kombinasjoner av disse årsakene, noe som kan gjøre prosedyren for å slette en fil mer komplisert. Hvis du for eksempel logger på som datamaskinadministrator, kan det oppstå en kombinasjon av årsak 1 (du har ikke tillatelser til å slette filen) og årsak 5 (filnavnet inneholder et etterfølgende tegn som fører til at filtilgang omdirigeres til en annen fil eller en fil som ikke finnes), og du kan kanskje ikke slette filen. Hvis du prøver å løse årsak 1 ved å bli eier av filen og legge til tillatelser, kan det hende at du fremdeles ikke kan slette filen fordi redigeringsprogrammet for tilgangskontrollisten i brukergrensesnittet ikke kan få tilgang til den riktige filen på grunn av årsak 6.

I slike situasjoner kan du bruke Subinacl-verktøyet med /onlyfile-bryteren (dette verktøyet er inkludert i Resource Kit) til å endre eierskap og tillatelser for en fil som ellers er utilgjengelig, for eksempel:
subinacl /onlyfile "\\?\c:\bane_til_problemfil" /setowner=domene\administrator /grant=domene\administrator=F
Obs!  Denne kommandoen er en enkelt kommandolinje som er brutt for å gi lesbarhet.

Dette eksemplet på en kommandolinje endrer C:\bane_til_problemfil filen som inneholder et etterfølgende mellomrom slik at domene\administrator-kontoen er eieren av filen og denne kontoen har full kontroll over filen. Du kan nå slette denne filen ved hjelp av Del-kommandoen med den samme "\\?\"-syntaksen.

Referanser

Hvis du vil ha mer informasjon om dette, kan du se følgende artikkel i Microsoft Knowledge Base:
319368 Du får feilmeldingen "Ingen tilgang" når du sletter mapper fra en montert stasjon (denne artikkelen kan være på engelsk)

Egenskaper

Artikkel-ID: 320081 - Forrige gjennomgang: 3. desember 2007 - Gjennomgang: 7.3
Informasjonen i denne artikkelen gjelder:
  • 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 (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • 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
  • 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
Nøkkelord: 
kbinfo kbfilesystems KB320081

Gi tilbakemelding

 

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