Numer ID artykułu: 320081 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

WPROWADZENIE

W tym artykule wyjaśniono, dlaczego nie zawsze można usunąć plik lub folder na woluminie systemu plików NTFS i omówiono rozwiązania zalecane dla poszczególnych przyczyn tego problemu.

Więcej informacji

Uwaga: Wewnątrz systemu NTFS foldery są specjalnym typem pliku. Wyraz „plik” oznacza więc w tym artykule plik lub folder.

Przyczyna 1: Plik używa listy ACL

Nie zawsze można usunąć plik, który używa listy kontroli dostępu (ACL, Access Control List). Aby rozwiązać ten problem, należy zmienić uprawnienia dotyczące pliku. Konieczne może być przejęcie prawa własności do plików, aby umożliwić zmianę uprawnień.

Administratorzy zawsze mogą przejąć prawa własności do pliku, nawet jeżeli nie udzielono im oficjalnie uprawnienia w odniesieniu do tego pliku. Właściciele pliku zawsze mogą modyfikować uprawnienia dotyczące pliku, nawet jeżeli nie udzielono im oficjalnie żadnych uprawnień w odniesieniu do tego pliku. Dlatego w celu usunięcia pliku konieczne może być przejęcie prawa własności do tego pliku i udzielenie sobie uprawnień do jego usuwania.

Nie można używać określonych narzędzi zabezpieczeń do wyświetlania lub modyfikowania uprawnień, ponieważ lista ACL pliku nie jest kanoniczna.

W celu obejścia tego problemu należy użyć innego narzędzia (na przykład nowszej kompilacji Cacls.exe).

Wpisy kontroli dostępu (ACE, Access Control Entry) na liście kontroli dostępu mają określoną preferowaną kolejność, która zależy od ich typu. Na przykład wpisy ACE zabraniające dostępu zazwyczaj są umieszczane przed wpisami ACE zezwalającymi na dostęp. Program może jednak zapisywać listę ACL, na której wpisy ACE są rozmieszczone zgodnie z dowolną kolejnością. W niektórych starszych wersjach systemu Windows występowały problemy, gdy system Microsoft Windows usiłował odczytać listy ACL, które nie były kanoniczne. Używając graficznego edytora zabezpieczeń programu Microsoft Windows Explorer, nie zawsze można poprawnie modyfikować listy ACL. Ten problem rozwiązano w nowszych wersjach systemu Windows. Jeżeli występuje ten problem, należy użyć najnowszej wersji narzędzia Cacls.exe. Nawet jeżeli nie można wyświetlić lub edytować listy ACL w miejscu, można zapisać nową listę ACL umożliwiającą uzyskanie dostępu do pliku.

Przyczyna 2: Plik jest używany

Nie zawsze można usunąć plik, który jest używany. Aby rozwiązać ten problem, należy ustalić, który proces dysponuje otwartym dojściem, a następnie zamknąć ten proces.

Zależnie od sposobu otwarcia pliku (na przykład w trybie dostępu wyłącznego, a nie udostępnienia), nie zawsze można usunąć używany plik. Można skorzystać z różnych narzędzi ułatwiających ustalenie na żądanie, które procesy dysponują otwartymi dojściami do plików. Aby uzyskać więcej informacji dotyczących narzędzi ułatwiających ustalenie, które procesy dysponują otwartymi dojściami do plików, kliknij następujące numery artykułów w celu wyświetlenia tych artykułów z bazy wiedzy Microsoft Knowledge Base:
242131 Jak wyświetlić listę procesów, które mają otwarte pliki
172710 Jak używać narzędzia OH z zestawu Resource Kit systemu Windows NT 4.0
Symptomy problemu mogą być różne. Można użyć polecenia Usuń do usunięcia pliku, ale plik nie zostanie w rzeczywistości usunięty, dopóki proces otwierający nie zwolni tego pliku. Ponadto nie zawsze można uzyskać dostęp do okna dialogowego Zabezpieczenia dla pliku oczekującego na usunięcie. Aby rozwiązać ten problem, należy ustalić, który proces dysponuje otwartym dojściem, a następnie zamknąć ten proces.

Przyczyna 3: Uszkodzenie systemu plików uniemożliwia dostęp do pliku

Nie zawsze można usunąć plik, jeżeli system plików jest uszkodzony. W celu rozwiązania tego problemu należy uruchomić narzędzie Chkdsk na uszkodzonym woluminie i naprawić wszelkie błędy.

Uszkodzone sektory na dysku, uszkodzenia innego sprzętu lub usterki oprogramowania mogą powodować uszkodzenie systemu plików i nieprawidłowe działanie samych plików. Zwykle stosowane operacje mogą w różny sposób kończyć się niepowodzeniem. Gdy system plików wykrywa uszkodzenie, rejestruje zdarzenie w dzienniku zdarzeń, a użytkownik zazwyczaj otrzymuje komunikat z monitem o użycie programu Chkdsk. Możliwość odzyskania danych z uszkodzonych plików przez program Chkdsk zależy od charakteru uszkodzenia, ale program ten zawsze przywraca system plików do wewnętrznie stabilnego stanu. Aby uzyskać dodatkowe informacje dotyczące korzystania z narzędzia Chkdsk, kliknij następujące numery artykułów w celu wyświetlenia tych artykułów z bazy wiedzy Microsoft Knowledge Base:
176646 Komunikat o błędzie: Plik lub katalog jest uszkodzony...
187941 Opis narzędzia CHKDSK i nowych przełączników /C oraz /I

Przyczyna 4: Pliki znajdują się w ścieżkach na poziomach niższych niż liczba znaków MAX_PATH

Nie zawsze można otworzyć, edytować lub usunąć plik, jeżeli występują problemy ze ścieżką pliku.

Rozwiązanie 1: Użycie automatycznie generowanej nazwy w formacie 8.3 w celu uzyskania dostępu do pliku

W celu rozwiązania tego problemu konieczne może być użycie automatycznie generowanej nazwy w formacie 8.3, aby uzyskać dostęp do pliku. To rozwiązanie może był najłatwiejsze, jeżeli ścieżka znajduje się na niskim poziomie w strukturze, ponieważ nazwy folderów są zbyt długie. Jeżeli ścieżka w formacie 8.3 jest zbyt długa lub obsługa nazw w formacie 8.3 została wyłączona dla danego woluminu, należy przejść do sekcji Rozwiązanie 2. Aby uzyskać dodatkowe informacje dotyczące wyłączania obsługi nazwy w formacie 8.3 dla woluminów NTFS, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
121007 Jak wyłączyć tworzenie nazw w formacie 8.3 na partycjach systemu NTFS

Rozwiązanie 2: Zmiana nazwy lub przeniesienie folderu znajdującego się na niskim poziomie w strukturze

Należy zmienić nazwę folderu, tak aby pliki docelowe nie znajdowały się na poziomie w strukturze niższym niż określony przez zmienną MAX_PATH. W takim wypadku należy rozpocząć od folderu głównego (lub innej wygodnej lokalizacji), a następnie skrócić nazwy folderów. Jeżeli ten krok nie umożliwia rozwiązania problemu (na przykład, jeżeli plik znajduje się w folderze na poziomie niższym niż poziom oznaczony numerem 128), należy przejść do sekcji Rozwiązanie 4.

Rozwiązanie 3: Mapowanie dysku do folderu w strukturze ścieżki

Należy zmapować dysk do folderu wewnątrz struktury ścieżki pliku lub folderu docelowego. Ta metoda umożliwia skrócenie ścieżki wirtualnej.

Załóżmy na przykład, że struktura ścieżki jest następująca:
\\NazwaSerwera\NazwaPodfolderu1\NazwaPodfolderu2\NazwaPodfolderu3\NazwaPodfolderu4\...
W tej ścieżce całkowita liczba znaków jest większa niż 255. Aby skrócić tę ścieżkę do 73 znaków, należy zmapować dysk do NazwaPodfolderu4.

Rozwiązanie 4: Użycie udziału sieciowego znajdującego się na poziomie danego folderu

Jeżeli rozwiązania 1, 2 i 3 nie są wygodne lub nie umożliwiają rozwiązania problemu, należy utworzyć udział sieciowy na jak najniższym poziomie w drzewie folderów, a następnie zmienić nazwę folderów przez uzyskanie dostępu do tego udziału.

Rozwiązanie 5: Użycie narzędzia, które może przechodzić ścieżki na niskich poziomach w strukturze

Wiele programów systemu Windows oczekuje, że maksymalna długość ścieżki będzie krótsza niż 255 znaków. Te programy przydzielają więc w magazynie lokalnym tylko taką ilość miejsca, jaka jest wymagana do obsługi typowych ścieżek. To ograniczenie nie obowiązuje w systemie NTFS, który może obsługiwać znacznie dłuższe ścieżki.

Ten problem może występować, jeżeli na pewnym poziomie w strukturze folderów jest tworzony udział, który znajduje się już na dość niskim poziomie, a następnie przy użyciu tego udziału jest tworzona wielopoziomowa struktura poniżej tego poziomu. Niektóre narzędzia wykonujące operacje lokalnie w drzewie folderów nie mogą przejść całego drzewa, począwszy od poziomu głównego. Dlatego może być konieczne użycie tych narzędzi w specjalny sposób, tak aby mogły przechodzić przez udział. (W dokumentacji funkcji CreateFile interfejsu API opisano metodę przechodzenia w tej sytuacji całego drzewa.)

Zazwyczaj można zarządzać plikami przy użyciu oprogramowania, które tworzy dane pliki. Program, który może tworzyć pliki zagnieżdżone głębiej niż określa parametr MAX_PATH, przeważnie może być także zastosowany do usunięcia plików lub zarządzania nimi. Pliki utworzone w udziale sieciowym często można usunąć za pomocą samego udziału.

Przyczyna 5: Nazwa pliku zawiera nazwę zastrzeżoną w obszarze nazw systemu Win32

Jeżeli nazwa pliku zawiera nazwę zastrzeżoną (na przykład „lpt1” ) w obszarze nazwy systemu Win32, nie zawsze można ten plik usunąć. W celu rozwiązania tego problemu należy zmienić nazwę pliku za pomocą programu działającego w systemie innym niż Win32. Można użyć narzędzia POSIX lub innego narzędzia korzystającego z odpowiedniej składni wewnętrznej do obsługi plików.

Ponadto można użyć niektórych wbudowanych poleceń do pominięcia typowego sprawdzania nazw zastrzeżonych systemu Win32, jeżeli specjalna składnia jest używana do określenia ścieżki pliku. Na przykład, jeżeli używane jest polecenie Del w systemie Windows XP, można usunąć plik o nazwie „lpt1” pod warunkiem, że pełna ścieżka pliku zostanie określona przy użyciu następującej specjalnej składni:
del \\?\c:\ścieżka_do_pliku\lpt1
Aby uzyskać więcej informacji dotyczących usuwania plików z nazwami zastrzeżonymi w systemach Windows NT i Windows 2000, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
120716 Jak usunąć pliki z nazwami zastrzeżonymi w systemie Windows
Aby uzyskać więcej informacji dotyczących usuwania plików z nazwami zastrzeżonymi w systemie Windows XP, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
315226 Jak usunąć pliki z nazwami zastrzeżonymi w systemie Windows XP
Jeśli dojście do pliku zostało otwarte przy użyciu typowego mechanizmu CreateFile systemu Win32, niektóre nazwy plików będą zarezerwowane dla starszych urządzeń obsługiwanych przez system DOS. Aby zachować zgodność ze starszymi wersjami, zabroniono używania tych nazw plików i tworzenia ich przy użyciu typowych wywołań plików w systemie Win32. Ograniczenie to nie występuje w systemie NTFS.

Można użyć programu systemu Win32 do pominięcia typowego sprawdzania nazw podczas tworzenia (lub usuwania) pliku, korzystając z tej samej techniki, jak w przypadku przechodzenia folderów znajdujących się na poziomie niższym niż określony przez zmienną MAX_PATH. Ponadto te mechanizmy sprawdzania nazwy nie są używane w przypadku niektórych narzędzi POSIX.

Przyczyna 6: Nazwa pliku zawiera nazwę uznaną za nieprawidłową w obszarze nazw systemu Win32

Nie zawsze można usunąć plik, jeżeli nazwa pliku zawiera nazwę uznaną za nieprawidłową (na przykład nazwa pliku z końcową spacją lub kropką albo składająca się wyłącznie ze spacji). W celu rozwiązania tego problemu należy usunąć plik przy użyciu narzędzia wykorzystującego odpowiednią składnię wewnętrzną. Na przykład można użyć wyrażenia „\\?\” w połączeniu z narzędziem mogącym wykonywać działania na pliku:
del "\\?\c:\ścieżka_do_pliku_z_końcową_spacją.txt "
Przyczyna tego problemu jest podobna do opisanej w sekcji Przyczyna 4. Jeżeli jednak typowa składnia systemu Win32 jest używana do otwarcia pliku, którego nazwa zawiera końcowe spacje lub kropki, to końcowe spacje lub kropki są usuwane przez otwarciem pliku. Jeżeli więc w folderze znajdują się dwa pliki „AFile.txt” i „AFile.txt ” (spacja po nazwie pliku), próba otwarcia drugiego pliku przy użyciu standardowych wywołań systemu Win32 powoduje otwarcie pierwszego pliku. Podobnie, kiedy użytkownik usiłuje otworzyć plik o nazwie „ ” (spacja) przy użyciu standardowych wywołań systemu Win32, wtedy otwierany jest nadrzędny folder tego pliku. Jeżeli w tej sytuacji użytkownik usiłuje zmienić ustawienia zabezpieczeń dla tych plików, nie otrzyma zezwolenia na wykonanie tej czynności lub może spowodować nieoczekiwaną zmianę tych ustawień dla innych plików. Jeżeli występuje takie zachowanie, użytkownik może uznać, że uzyskał uprawnienia w odniesieniu do pliku, dla którego w rzeczywistości istnieje restrykcyjna lista ACL.

Kombinacje przyczyn

Czasami mogą występować kombinacje tych przyczyn, które mogą skomplikować procedurę usuwania pliku. Na przykład, jeżeli użytkownik loguje się jako administrator komputera, może wystąpić kombinacja przyczyny 1 (brak uprawnień do usunięcia pliku) i przyczyny 5 (nazwa pliku zawiera końcowy znak, który powoduje, że dostęp do pliku jest przekierowywany do innego lub nieistniejącego pliku), dlatego nie można usunąć pliku. Jeżeli użytkownik próbuje wyeliminować przyczynę 1, przejmując prawo własności do pliku i dodając uprawnienia, wciąż nie może usunąć pliku, ponieważ edytor list ACL w interfejsie użytkownika nie może uzyskać dostępu do odpowiedniego pliku na skutek wystąpienia przyczyny 6.

W tej sytuacji można użyć narzędzia Subinacl z przełącznikiem /onlyfile (to narzędzie uwzględniono w zestawie Resource Kit) do zmiany własności i uprawnień w odniesieniu do pliku, który jest niedostępny, na przykład:
subinacl /onlyfile "\\?\c:\ścieżka_do_pliku_powodującego_problem" /setowner=domena\administrator /grant=domena\administrator=F
Uwaga: To polecenie jest pojedynczym wierszem polecenia zawiniętym w celu zwiększenia przejrzystości tekstu.

Ten przykładowy wiersz polecenia modyfikuje plik C:\ścieżka_do_pliku_powodującego_problem zawierający końcową spację, tak aby konto domena\administrator było właścicielem pliku i uzyskało pełną kontrolę nad plikiem. Teraz można usunąć ten plik przy użyciu polecenia Del z tą samą składnią "\\?\".

Materiały referencyjne

Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
319368 Komunikat o błędzie „Odmowa dostępu” jest wyświetlany podczas usuwania folderów z dysku zainstalowanego

Właściwości

Numer ID artykułu: 320081 - Ostatnia weryfikacja: 12 lutego 2008 - Weryfikacja: 7.3
Informacje zawarte w tym artykule dotyczą:
  • 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
Słowa kluczowe: 
kbinfo kbfilesystems KB320081

Przekaż opinię

 

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