Не вдається видалити файл або папку в томі з файловою системою NTFS

Переклади статей Переклади статей
Номер статті: 320081 - Показ продуктів, яких стосується ця стаття.
Розгорнути все | Згорнути все

На цій сторінці

ВСТУП

У цій статті описуються причини неможливості видалення файлу або папки у томі з файловою системою NTFS і різні способи вирішення цієї проблеми.

ДОДАТКОВІ ВІДОМОСТІ

Примітка. Усередині файлової системи NTFS папки інтерпретуються як файли особливого типу. Тому слово "файл" у цій статті може означати як файл, так і папку.

Причина 1. Файл використовує список керування доступом (ACL -Access Control List)

Не можливо видалити файл, що використовує список керування доступом. Щоб вирішити цю проблему, змініть дозволи на доступ до файлу. У разі потреби, можна змінити власника файлів, щоб мати можливість змінювати дозволи.

Адміністратори мають право змінювати власника будь-якого файлу, навіть якщо дозвіл на доступ до нього їм не надано явно. Власники файлів мають можливість змінювати дозволи на доступ до файлів, навіть якщо будь-які дозволи на доступ до них їм не надано явно. Отже, можна змінити власника файлу, надати собі дозволи на його видалення, і потім видалити цей файл.

Неможливо використати певні засоби безпеки, щоб переглянути або змінити дозволи на доступ до файлів, які мають нестандартний список керування доступом

Щоб вирішити цю проблему, скористуйтеся іншим засобом (наприклад, останньою версією програми Cacls.exe).

Записи керування доступом (ACE - Access Control Entries) у списку керування доступом розташовано залежно від їх типу. Наприклад, записи керування доступом, які забороняють доступ, зазвичай містяться перед записами, які його надають. Проте, нічого не заважає програмі створити список керування доступом у довільному порядку. У деяких ранніх версіях Windows виникали проблеми, коли система Microsoft Windows намагалася прочитати такі нестандартні списки керування доступом. Інколи неможливо правильно змінити такі списки керування доступом, використовуючи графічний редактор безпеки провідника Microsoft Windows. Цю проблему було вирішено в пізніших версіях Windows. Якщо виникла ця проблема, скористайтеся пізнішою версією Cacls.exe. Навіть якщо неможливо переглянути або внести зміни в список керування доступом, ви маєте змогу створити новий список, який дозволятиме отримати доступ до файлу.

Причина 2. Цей файл вже використовується іншим процесом

Неможливо видалити файл, що використовується іншим процесом. Щоб вирішити цю проблему, визначте процес, який має відкриті дескриптори і закрийте його.

Можливість видалення файлу, який використовується залежить від того, як відкрито файл (наприклад, його відкрито з правами монопольного або загального доступу). Є велика кількість засобів для визначення процесів з відкритими дескрипторами Щоб отримати додаткові відомості про засоби для визначення процесів з відкритими дескрипторами файлів, клацніть номери статей у базі знань Microsoft Knowledge Base:
242131 Як вивести список процесів, які мають відкриті файли (Це посилання може вказувати на матеріали, повністю або частково викладені англійською мовою.)
172710 Як використовувати засіб OH пакета ресурсів Windows NT 4.0 Resource Kit (Це посилання може вказувати на матеріали, повністю або частково викладені англійською мовою.)
Ця проблема може мати різні ознаки. Команда Видалити може бути доступною, але фактично файл не видалиться, поки не буде закрито процес, який його використовує. Крім того, може бути недоступним діалогове вікно Безпека для файлу, видалення якого відкладено. Щоб вирішити цю проблему, визначте процес, який має відкриті дескриптори і закрийте його.

Причина 3. Доступ до файлу неможливий через пошкодження файлової системи

Видалення файлу буває неможливим, якщо пошкоджена файлова система. Щоб вирішити цю проблему, запустіть програму Chkdsk на томі диска для виправлення помилок

Пошкодження файлової системи і проблемний стан файлу може бути спричинено пошкодженими секторами диска, іншим несправним устаткуванням або програмними помилками. Типові операції можуть визивати різноманітні помилки. Якщо файлова система виявила в собі порушення, вона реєструє їх у журналі й зазвичай пропонує запустити програму Chkdsk. Здатність програми Chkdsk відновити дані, які зберігалися у файлі, залежить від характеру пошкодження, однак Chkdsk повертає файлову систему до узгодженого стану. Щоб отримати додаткові відомості про використання програми Chkdsk, клацніть номер статті в базі знань Microsoft Knowledge Base:
176646 Повідомлення про помилку: Файл або каталог пошкоджено... (Це посилання може вказувати на матеріали, повністю або частково викладені англійською мовою.)
187941 Опис програми CHKDSK і нових параметрів /C та /I (Це посилання може вказувати на матеріали, повністю або частково викладені англійською мовою.)

Причина 4: Кількість символів у повному шляху до файлу перевищує максимально допустиму MAX_PATH

Відкривати, змінювати або видаляти файл може бути неможливо через проблеми з шляхом до файлу.

Вирішення 1: Використання для доступу до файлу автоматично створюваного імені у форматі 8.3

Для вирішення проблеми можна скористатися автоматично створюваним іменем у форматі 8.3 для доступу до файлу. Це вирішення може виявитися найпростішим, якщо надмірна довжина шляху спричинена великими іменами папок. Якщо шлях у форматі 8.3 також надто довгий або якщо імена у форматі 8.3 у томі вимкнуті, зверніться до вирішення 2. Щоб отримати додаткові відомості про вимкнення імен файлів у форматі 8.3 у томах з NTFS, клацніть номер статті в базі знань Microsoft Knowledge Base:
121007 Як вимкнути створення імен у форматі 8.3 у NTFS-розділах (Це посилання може вказувати на матеріали, повністю або частково викладені англійською мовою.)

Вирішення 2: Перейменування, змінення довжини імені папки

Перейменуйте папку таким чином, щоб довжина шляху до кінцевих файлів не перевищувала значення MAX_PATH. Почніть робити це з кореневої папки (або з іншого зручного місця) і потім послідовно скоротіть імена папок. Якщо це не вирішить проблему (наприклад,шлях до файлу має глибину, більшу ніж 128 папок), зверніться до вирішення 4.

Вирішення 3: Підключення диска до папки у структурі шляху

Підключіть диск до папки, що входить до структури шляху до кінцевого файлу або папки. Цей метод скорочує віртуальний шлях.

Наприклад, є шлях з такою структурою:
\\ім'я_сервера\ім'я_підпапки1\ім'я_підпапки2\ім'я_підпапки3\ім'я_підпапки3\...
Загальна довжина цього шляху становить більше 255 символів. Щоб зменшити його довжину до 73 символів, потрібно підключити диск до вкладеної папки 4.

Вирішення 4: Використання спільної мережної папки, глибина якої така сама, як у проблемної папки

Якщо вирішення 1,2 і 3 є незручними або не вирішують проблему, створіть спільну мережну папку з максимально великою глибиною, відкрийте її та перейменуйте папки.

Вирішення 5: Використання засобу, який може прослідити глибокий шлях

Багато програм Windows підтримують довжину шляху не більше 255 символів. Тому ці програми для обробки таких стандартних шляхів використовують лише достатній обсяг внутрішньої пам'яті. Файлова система NTFS не має такого обмеження і підтримує шляхи з більшою довжиною.

Ця проблема може виникнути, якщо створити спільну мережну папку на достатньо великій глибині й надалі поглиблювати структуру від неї. Деякі засоби, які працюють на локальному рівні дерева папок, не можуть прослідити все дерево, починаючи з кореневої папки. Такі засоби необхідно застосовувати особливим чином, щоб вони могли дістатися до спільної папки. (Спосіб проходження всього дерева папок в цій ситуації описано в документації до інтерфейсу CreateFile API.)

Зазвичай можна керувати файлами, використовуючи програми, якими їх було створено. Ту саму програму, в якій було створено файли з шляхом, довшим від MAX_PATH, як правило, можна використати для видалення або керування цими файлами. Для видалення файлів, які було створено у спільному ресурсі, зазвичай використовується той же ресурс.

Причина 5: Ім'я файлу включає фрагмент, який збігається з зарезервованим іменем із простору імен Win32

Якщо ім'я файлу включає фрагмент, який співпадає з зарезервованим іменем (наприклад, "lpt1") з простору імен Win32, видалення файлу може не вдатися. Щоб вирішити цю проблему, перейменуйте файл за допомогою програми, яка не є застосуванням Win32. Для використання файлу можна застосувати POSIX або будь-який інший засіб з відповідним внутрішнім синтаксисом

Крім того, можна використовувати деякі вбудовані команди і спеціальний синтаксис, щоб уникнути стандартної перевірки зарезервованих імен Win32 в разі вказання шляху до файлу. Наприклад, за допомогою команди Del у Windows XP можна видалити файл з іменем "lpt1", задавши повний шлях до файлу з використанням такого спеціального синтаксису:
del \\?\c:\шлях_до_файлу\lpt1
Щоб отримати додаткову інформацію про видалення файлів з зарезервованими іменами в Windows NT і Windows 2000, клацніть номер статті в базі знань Microsoft Knowledge Base:
120716 Як видаляти файли з зарезервованими іменами в Windows (Це посилання може вказувати на матеріали, повністю або частково викладені англійською мовою.)
Щоб отримати додаткову інформацію про видалення файлів з зарезервованими іменами в Windows XP, клацніть номер статті в базі знань Microsoft Knowledge Base:
315226 Як видаляти файли з зарезервованими іменами в Windows XP (Це посилання може вказувати на матеріали, повністю або частково викладені англійською мовою.)
Якщо відкривати дескриптор файлу, використовуючи стандартний механізм Win32 "CreateFile", певні імена файлів є зарезервованими для застарілих пристроїв DOS. З метою зворотної сумісності такі імена файлів заборонені й не можуть бути створені за використання стандартних файлових викликів Win32. Проте в файловій системі NTFS таких обмежень не існує.

Можна використовувати програму Win32, щоб уникнути стандартної перевірки імен під час створення або видалення файлів, скориставшись тією самою методикою, яку описано для досягнення папок глибиною більше MAX_PATH. Крім того, певні засоби POSIX не підлягають перевірці імен.

Причина 6. Ім'я файлу включає фрагмент, який є неприпустимим у просторі імен Win32

Видалення файлу може не вдатися, якщо ім'я файлу включає неприпустимий фрагмент (наприклад, ім'я файлу закінчується пробілом або крапкою чи складається лише з пробілів). Щоб вирішити цю проблему, використовуйте засоби з відповідним внутрішнім синтаксисом для видалення файлів. Для роботи з такими файлами можна використовувати певні засоби з синтаксисом "\\?\", наприклад:
del "\\?\c:\шлях_до_файлу_з_пробілом_у_кінці "
Причина цієї проблеми подібна причині 4. Однак, якщо відкрити файл, ім'я якого містить пробіли або крапки у кінці, за допомогою стандартної команди Win32, ці пробіли і крапки буде видалено перед фактичним відкриттям файлу. Тому, якщо в одній папці є два файли з іменами "AFile.txt" and "AFile.txt " (зверніть увагу на пробіл після імені файлу),у разі спроби відкрити другий файл за допомогою стандартних викликів Win32, натомість буде відкрито перший файл. Так само, якщо спробувати відкрити файл з іменем " " (пробіл) з використанням стандартних викликів Win32, замість нього буде відкрито батьківську папку. У цій ситуації спроба змінити параметри безпеки таких файлів може або закінчитися невдачею, або призвести до непередбаченої зміни параметрів інших файлів. Якщо таке відбувається, користувач може помилково припустити, що він має дозвіл на доступ до файлу, який фактично має обмежувальний список керування доступом.

Комбінації причин

Інколи можуть впливати кілька причин одразу, ускладнюючи процедуру видалення файлу. Наприклад, якщо ввійти до системи як адміністратор, можна зіткнутися з комбінацією причини 1 (не має дозволу на видалення файлу) і причини 5 (ім'я файлу містить у кінці символ, який спричиняє виклик іншого або неіснуючого файлу). В результаті видалення файлу неможливо. Спроба усунути причину 1 зміною власника файлу і додаванням дозволів може не вирішити проблему - видалити файл все одно буде неможливо, оскільки редактор списку керування доступом в інтерфейсі користувача не може отримати доступ до відповідного файлу за причиною 6.

В цій ситуації можна застосувати службову програму Subinacl з параметром /onlyfile (ця програма входить до пакета ресурсів), щоб змінити власника і дозволи на доступ до файлу, які є недоступними іншим чином, наприклад:
subinacl /onlyfile "\\?\c:\шлях_до_проблемного_файлу" /setowner=домен\адміністратор /grant=домен\адміністратор=F
Примітка. Ця команда повинна вводитися в один рядок. Її було розбито на два рядки з метою зручності читання.

Наведена команда змінює файл C:\шлях_до_проблемного_файлу,який містить пробіл у кінці імені, таким чином, що обліковий запис домен\адміністратор стає власником файлу і отримує повний доступ до нього. Тепер за допомогою команди Del з тим же синтаксисом "\\?\" можна видалити цей файл.

ПОСИЛАННЯ

Щоб отримати додаткові відомості, клацніть номер статті в базі знань Microsoft Knowledge Base:
319368 Під час видалення папок з підключеного диска надходить повідомлення про помилку "Немає доступу" (Це посилання може вказувати на матеріали, повністю або частково викладені англійською мовою.)

Властивості

Номер статті: 320081 - Востаннє переглянуто: 3 грудня 2007 р. - Редакція: 7.3
ЗАСТОСОВУЄТЬСЯ ДО:
  • 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
Ключові слова: 
kbinfo kbfilesystems KB320081

Надіслати відгук

 

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