ID článku: 320081 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

ÚVOD

Článek popisuje, proč nebude možné odstranit soubor či složku ve svazku se systémem souborů NTFS. Pro jednotlivé možné příčiny doporučuje řešení.

Další informace

Poznámka: Systém NTFS pracuje se složkami jako se zvláštním typem souboru. Z tohoto důvodu se v tomto článku slovo „soubor“ vztahuje jak na soubor, tak na složku.

Příčina 1: Soubor používá seznam řízení přístupu (ACL)

Soubor, který používá seznam řízení přístupu (ACL), nelze odstranit. Chcete-li problém odstranit, změňte oprávnění přístupu k souboru. Ke změnění oprávnění bude pravděpodobně třeba převzít vlastnictví souborů.

Správci mohou implicitně převzít vlastnictví libovolného souboru, přestože jim nebylo žádné oprávnění přístupu k souboru explicitně uděleno. Vlastníci souboru mohou implicitně měnit oprávnění přístupu k souboru, i když jim nebylo žádné oprávnění přístupu k souboru explicitně uděleno. Uživatel tedy může převzít vlastnictví souboru, udělit si oprávnění soubor odstranit a následně soubor odstranit.

Nebude možné použít některé zabezpečovací nástroje k zobrazení či změnám oprávnění, protože soubor používá nekanonický seznam ACL

Chcete-li tento problém vyřešit, použijte jiný nástroj (např. novější verzi programu Cacls.exe).

Položky řízení přístupu (ACE) mají v seznamu ACL určité upřednostňované pořadí v závislosti na jejich typu. Položky ACE zabraňující přístupu například obvykle předchází položkám ACE, které přístup udělují. Nic však nezabrání programu, aby sepsal seznam ACL s libovolným pořadím položek ACE. Ve dřívějších verzích systému Windows docházelo k potížím, jestliže se systém Windows pokusil číst tyto nekanonické seznamy ACL. Někdy nelze tyto soubory ACL změnit správně použitím grafického bezpečnostního editoru aplikace Microsoft Windows Explorer. Tento problém byl vyřešen v pozdějších verzích systému Windows. Dochází-li k těmto potížím, použijte nejnovější verzi programu Cacls.exe. Přestože nebude možné přímo zobrazit seznam ACL či provádět jeho úpravy, můžete napsat nový seznam ACL, který vám umožní získat přístup k souboru.

Příčina 2: Soubor je používán

Soubor, který je používán, nelze odstranit. Jestliže chcete problém odstranit, určete proces s otevřeným popisovačem a proces zavřete.

Odstranění používaného souboru bude možné v závislosti na způsobu jeho otevření (je například otevřen s výhradním přístupem místo sdíleného přístupu). K určení procesů s otevřenými popisovači k souborům můžete použít kdykoli různé možné nástroje. Další informace o nástrojích sloužících k určení procesů s otevřenými popisovači k souborům najdete v následujících článcích znalostní báze Microsoft Knowledge Base:
242131 Zobrazení seznamu procesů s otevřenými soubory (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
172710 Použití nástroje OH v sadě Windows NT 4.0 Resource Kit (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
Příznaky tohoto problému se mohou lišit. Bude možné používat příkaz Odstranit k odstranění souboru, ale soubor nebude odstraněn, dokud jej proces, který má soubor otevřený, neuvolní. Dále nebude možné zobrazit dialogové okno Zabezpečení souboru, který čeká na odstranění. Jestliže chcete problém odstranit, určete proces s otevřeným popisovačem a proces ukončete.

Příčina 3: Systémové poškození souboru zabraňuje přístupu k souboru

Soubor, jehož systém je poškozen, nelze odstranit. Pokud chcete problém odstranit, spusťte nástroj Chkdsk na svazku disku a opravte chyby.

Souborový systém může být poškozen chybnými sektory na disku, jiným vadným hardwarem nebo softwarovými chybami způsobujícími problematický stav souborů. Běžné operace mohou selhat různými způsoby. Jestliže souborový systém zjistí poškození, nahlásí událost do protokolu událostí. Uživatel obvykle obdrží zprávu s výzvou ke spuštění nástroje Chkdsk. Nástroj Chkdsk obnoví souborová data v závislosti na charakteru poškození. V každém případě soubor navrátí do vnitřně konzistentního stavu. Další informace o použití nástroje Chkdsk získáte v následujících článcích znalostní báze Microsoft Knowledge Base:
176646 Chybová zpráva: Soubor nebo adresář je porušen... (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
187941 Popis nových parametrů /C a /I nástroje Chkdsk

Příčina 4: Soubory existují v cestách, které mají větší počet znaků, než je určený v cestě MAX_PATH

Soubor nelze otevřít, upravit nebo odstranit, došlo-li k potížím s cestou k souboru.

Řešení 1: Použití automaticky generovaného názvu standardu 8.3 k získání přístupu k souboru

Jestliže chcete problém odstranit, použijte k získání přístupu k souboru automaticky generovaný název standardu 8.3. Řešení je nejjednodušší, je-li cesta hluboká z důvodu příliš dlouhých názvů složek. Je-li cesta standardu 8.3 rovněž příliš dlouhá nebo jsou-li názvy standardu 8.3 pro svazek zakázány, přejděte k Řešení 2. Další informace o zakázání názvů souborů standardu 8.3 ve svazcích NTFS naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
121007 Jak zakázat vytvoření názvu standardu 8.3 v oddílech NTFS (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Řešení 2: Přejmenování nebo přemístění hluboké složky

Přejmenujte složku, aby cílové soubory hlubší než cesta MAX_PATH již neexistovaly. V takovém případě začněte u kořenové složky (nebo na jiném vhodném místě) a přejmenujte složky, aby měly kratší názvy. Pokud není tímto krokem problém vyřešen (například je-li soubor více než 128 složek hluboko), přejděte k Řešení 4.

Řešení 3: Připojení jednotky ke složce ve struktuře cesty

Připojte jednotku ke složce uvnitř struktury cesty cílového souboru nebo složky. Tato metoda zkrátí virtuální cestu.

Existuje například cesta, jejíž struktura je následující:
\\Název_serveru\Název_podsložky_1\Název_podsložky_2\Název_podsložky_3\Název_podsložky_4\...
Celkový počet znaků v této cestě přesahuje 255 znaků. Chcete-li zkrátit délku cesty na 73 znaků, připojte jednotku ke složce Název_podsložky4.

Řešení 4: Použití sdílené síťové položky stejně hluboké jako složka

Není-li Řešení 1, Řešení 2 či Řešení 3 vhodné nebo účinné, vytvořte sdílenou síťovou položku, která je co nejvíce hluboká jako strom složek. Poté složky přejmenujte pomocí přístupu ke sdílené síťové položce.

Řešení 5: Použití nástroje pro procházení hlubokými cestami

Většina programů systému Windows očekává, že cesta bude mít méně než 255 znaků. Programy proto přidělují pouze takové množství interní paměti, které je pro takové cesty dostatečné. Systém NTFS takové omezení nemá a může pracovat s daleko delšími cestami.

K tomuto problému může dojít, pokud v určitém místě struktury složky vytvoříte sdílenou položku, která je již dost hluboká, a poté pod ní vytvoříte hlubokou strukturu odkazující pomocí sdílené položky. Některé nástroje, které jsou používány místně ve stromu složky, nebudou moci procházet celým stromem od kořene. Nástroje je třeba použít specifickým způsobem, aby mohly procházet sdílenou položkou. (Metoda, jak v tomto případě procházet celým stromem, je popsána v dokumentaci k rozhraní API CreateFile.)

Obvykle se správa souborů provádí v softwaru, kterým byl soubor vytvořen. Máte-li program, který umí vytvořit soubory hlubší než cesta MAX_PATH, můžete jej obvykle používat také k odstranění či správě souborů. Obvykle můžete odstranit soubory vytvořené ve sdílené položce použitím stejné sdílené položky.

Příčina 5: Název souboru obsahuje název vyhrazený pro obor názvů Win32.

Obsahuje-li název souboru vyhrazený název (např. LPT1) pro obor názvů Win32, nelze soubor odstranit. Jestliže chcete problém vyřešit, přejmenujte soubor programem nepoužívajícím systém Win32. Soubor můžete používat pomocí nástroje POSIX nebo jiného libovolného nástroje, který používá příslušnou vnitřní syntaxi.

Použijete-li dále pro určení cesty k souboru specifickou syntaxi, můžete používat některé vestavěné příkazy, abyste obešli obvyklé kontroly systému Win32 na vyhrazené názvy. Jestliže použijete v systému Windows XP například příkaz Del, můžete soubor nazvaný LPT1 odstranit za předpokladu, že celou cestu souboru zadáte pomocí speciální syntaxe:
del \\?\c:\cesta_k_souboru\lpt1
Další informace o odstraňování souborů s vyhrazenými názvy v systému Windows NT a Windows 2000 získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
120716 Jak v systému Windows odebrat soubory s vyhrazenými názvy (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
Další informace o odstraňování souborů s vyhrazenými názvy v systému Windows XP získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
315226 Jak v systému Windows XP odebrat soubory s vyhrazenými názvy (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
Otevřete-li popisovač k souboru obvyklým mechanismem systému Win32 CreateFile (vytvoření souboru), budou určité názvy souboru vyhrazeny pro stará zařízení systému DOS. Pro zpětnou kompatibilitu nejsou tyto názvy souborů povoleny a nelze je vytvořit obvyklým voláním souborů systému Win32. Toto však není nijak omezeno v systému NTFS.

Můžete použít program Win32 k obejití obvyklých kontrol názvů při vytváření souboru (nebo jeho odstranění), a to pomocí stejného postupu pro procházení složek hlubších než cesta MAX_PATH. Této kontrole názvů nepodléhají také některé nástroje POSIX.

Příčina 6: Název souboru obsahuje název vyhrazený pro obor názvů Win32.

Soubor, jehož název je neplatný, nelze odstranit (např. název obsahuje koncovou mezeru nebo tečku nebo je tvořen pouze mezerou). Pokud chcete problém odstranit, použijte k odstranění souboru nástroj používající příslušnou vnitřní syntaxi. U některých nástrojů můžete při práci s těmito soubory použít syntaxi „\\?\“, např.:
del "\\?\c:\cesta_k_souboru obsahujícímu koncovou mezeru.txt. "
Příčina tohoto problému je podobná jako Příčina 4. Jestliže však k otevření souboru, jenž má v názvu koncové mezery či tečky, použijete obvyklou syntaxi systému Win32, budou před samotným otevřením souboru odstraněny koncové mezery či tečky. Pokud se ve stejné složce nachází dva soubory pojmenované „Soubor.txt“ a „Soubor.txt “ (tj. mezera za názvem souboru), dojde při pokusu otevřít druhý soubor standardním voláním systému Win32 k otevření souboru prvního. K podobné situaci dojde u souboru, jehož název obsahuje pouze mezeru („ “) a který se pokusíte otevřít standardním voláním systému Win32. Místo něj se otevře nadřazená složka souboru. Jestliže se v takových případech pokusíte změnit u těchto souborů nastavení zabezpečení, pravděpodobně to nebude možné nebo neočekávaně změníte nastavení jiných souborů. Dojde-li ke změně nastavení, budete se pravděpodobně domnívat, že máte oprávnění k souboru, který má ve skutečnosti omezený seznam ACL.

Kombinace příčin

Někdy může dojít ke kombinaci uvedených příčin, a tím mohou být procedury odstranění souboru složitější. Přihlásíte-li se například jako správce počítače, může dojít ke kombinaci Příčiny 1 (nemáte oprávnění soubor odstranit) a Příčiny 5 (název souboru obsahuje koncovou mezeru, což má za následek, že přístup k souboru je omezen na jiný nebo neexistující soubor), a nebude možné soubor odstranit. Jestliže se pokusíte vyřešit Příčinu 1 převzetím vlastnictví souboru a přidáním oprávnění, nebude přesto možné soubor odstranit, protože editor seznamu ACL nemůže v uživatelském rozhraní získat přístup k vhodnému souboru kvůli Příčině 6.

V takovém případě můžete použít nástroj Subinacl s přepínačem /onlyfile (nástroj je součástí sady Resource Kit) a změnit vlastnictví a oprávnění pro soubor, který je jinak nedostupný. Např.:
subinacl /onlyfile „\\?\c:\cesta_k_problémovému_souboru“ /setowner=doména\správce /grant=doména\správce=F
Poznámka: Příkaz je jednořádkovým příkazem. Rozdělen byl z důvodů lepší čitelnosti.

Vzorový příkazový řádek mění soubor C:\cesta_k_problémovému_souboru obsahující koncovou mezeru, tak aby účet doména\správce byl vlastníkem souboru a měl nad souborem plnou kontrolu. Nyní lze soubor odstranit pomocí příkazu Del se stejnou syntaxí „\\?\“.

Odkazy

Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
319368 Při odstranění složek z připojené jednotky se zobrazí chybová zpráva Přístup byl odepřen (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Vlastnosti

ID článku: 320081 - Poslední aktualizace: 23. září 2011 - Revize: 9.0
Informace v tomto článku jsou určeny pro produkt:
  • 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 Advanced Server, Limited Edition
  • Microsoft Windows Datacenter Server Limited Edition
Klíčová slova: 
kbfilesystems kbinfo KB320081

Dejte nám zpětnou vazbu

 

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