Код статьи: 320081 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Введение

В данной статье описаны причины неудачи при удалении файла или папки в томе с файловой системой NTFS и различные способы решения этой проблемы.

Дополнительная информация

Примечание. В файловой системе NTFS папки интерпретируются как файлы особого типа. Поэтому слово «файл» в данной статье может означать как файл, так и папку.

Причина 1. Файл использует список управления доступом (ACL)

Невозможно удалить файл, использующий список управления доступом (ACL). Для решения этой проблемы измените разрешения на файл. Для изменения разрешений, возможно, потребуется сменить владельца файлов.

Администраторы имеют возможность сменить владельца любого файла, даже если им не были даны разрешения на файл явным образом. Владельцы файлов могут изменять разрешения на файлы, даже если им не были даны разрешения на файл явным образом. Поэтому следует сменить владельца файла, дать самому себе разрешение на удаление файла и затем удалить файл.

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

Чтобы устранить эту проблему, используйте другое средство (например, последнюю версию Cacls.exe).

Записи управления доступом (ACE) в списке управления доступом располагаются в определенной последовательности в зависимости от их типа. Например, записи управления доступом, запрещающие доступ, обычно идут перед записями, разрешающими доступ. Однако ничто не мешает программе создать список управления доступом с произвольной последовательностью записей. В некоторых ранних версиях Windows возникают проблемы при попытке чтения таких нестандартных списков управления доступом. Иногда не удается правильно изменить эти списки управления доступом с помощью графического редактора службы безопасности Microsoft Windows Explorer. Эта проблема была решена в более поздних версиях Windows. При появлении этой проблемы воспользуйтесь более поздней версией программы Cacls.exe. Даже если не удастся отобразить или отредактировать список управления доступом, можно создать новый список, который позволит получить доступ к файлу.

Причина 2. Файл занят

Невозможно удалить файл, занятый другим процессом. Для решения этой проблемы определите процесс с открытыми дескрипторами и закройте его.

Режим, в котором был открыт файл (например, режим монопольного или общего доступа), определяет возможность удаления используемого файла. В любой момент можно воспользоваться множеством средств для определения процессов с открытыми дескрипторами файлов. Дополнительные сведения о средствах для определения процессов с открытыми дескрипторами файлов см. в следующей статье базы знаний Майкрософт:
242131 Как отобразить список процессов, имеющих открытые файлы
172710 Использование средства OH в пакете ресурсов Windows NT 4.0 Resource Kit (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
Эта проблема может проявляться по-разному. Команда Удалить может быть доступна, но фактически файл не удаляется до тех пор, пока он не будет освобожден использующим его процессом. Кроме того, может отсутствовать доступ к диалоговому окну Безопасность для файла, удаление которого отложено. Для решения этой проблемы определите процесс с открытыми дескрипторами и закройте его.

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

Возможно, файл не может быть удален из-за повреждения файловой системы. Для решения этой проблемы запустите служебную программу Chkdsk на томе диска для исправления всех ошибок.

Повреждение файловой системы и проблемное состояние файла может быть вызвано поврежденными секторами на диске, другим неисправным оборудованием или ошибками программного обеспечения. Обычные операции могут вызывать различные сбои. При обнаружении дефектов в файловой системе они регистрируются в журнале, и появляется сообщение, предлагающее запустить программу Chkdsk. Возможность восстановления данных файла программой Chkdsk зависит от характера повреждения, однако с помощью этой программы файловая система возвращается в присущее ей согласованное состояние. Дополнительные сведения о программе Chkdsk см. в следующей статье базы знаний Майкрософт:
176646 Сообщение об ошибке «Файл или каталог поврежден...» (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
187941 Описание программы CHKDSK и новых параметров /C и /I (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Причина 4. Количество символов в пути файла превышает максимально допустимое (MAX_PATH)

Проблемы с открытием, редактированием или удалением файла могут быть вызваны неправильным указанием пути.

Решение 1. Использование для доступа к файлу автоматически создаваемого имени в формате 8.3

Для решения этой проблемы можно воспользоваться автоматически создаваемым именем файла в формате 8.3. Это решение может оказаться наиболее простым, если чрезмерная длина пути вызвана длинными названиями папок. Если путь 8.3 тоже слишком длинен или имена в формате 8.3 для тома неактивны, воспользуйтесь решением 2. Дополнительные сведения об отключении имен файлов в формате 8.3 в томах NTFS см. в следующей статье базы знаний Майкрософт:
121007 Как отключить создание имен файлов в формате «8.3» на разделах NTFS

Решение 2. Переименование или изменение длины имени папки

Переименуйте папку, чтобы длина пути конечных файлов не превышала значение MAX_PATH. Начните этот процесс с корневой папки (или с другого удобного места) и переименуйте папки, укорачивая их имена. Если это не решит проблему (например, если глубина пути файла составляет более 128 папок), перейдите к решению 4.

Решение 3. Подключение диска к папке в структуре пути

Подключите диск к папке, входящей в структуру пути к целевому файлу или папке. Этот метод укорачивает виртуальный путь.

В качестве примера рассмотрим путь со следующей структурой:
\\имя_сервера\имя_вложенной_папки_1\имя_вложенной_папки_2\имя_вложенной_папки_3\имя_вложенной_папки_4\...
В этом пути общее количество символов превышает 255. Чтобы уменьшить его длину до 73 символов, подключите диск к вложенной папке 4.

Решение 4. Использование общего сетевого каталога, глубина которого равна глубине папки

Если решения 1, 2 и 3 не подходят или не устраняют проблему, создайте сетевой каталог с максимально возможной глубиной в дереве папок и затем переименуйте папки, открыв каталог.

Решение 5. Использование средства, способного проследить глубокий путь

Для многих программ Windows максимальная длина пути составляет 255 символов. Поэтому такие программы используют для обработки этих стандартных путей только достаточные внутренние хранилища. В файловой системе NTFS подобные ограничения отсутствуют, поэтому она поддерживает более длинные пути.

Эта проблема может появляться при создании общего каталога на достаточно большой глубине структуры папок и последующем углублении структуры от этого каталога. Некоторые средства, действующие на локальном уровне дерева папок, не могут прослеживать все дерево, начиная с корневого каталога. Необходимо особым образом использовать эти средства, чтобы они могли пройти путь до общего каталога. (Способ прохождения всего дерева в подобной ситуации описан в документации к интерфейсу API «CreateFile».)

Как правило, можно управлять файлами с помощью программ, в которых они были созданы. При наличии программы, способной создавать файлы глубже максимальной длины пути (MAX_PATH), ее обычно можно использовать для удаления или управления файлами. Для удаления файлов, созданных в общем ресурсе, обычно используется этот же ресурс.

Причина 5. Имя файла содержит фрагмент, зарезервированный в пространстве имен Win32

Если имя файла содержит фрагмент, например «lpt1», зарезервированный в пространстве имен Win32, удаление файла невозможно. Для решения этой проблемы воспользуйтесь для переименования файла программой, не являющейся приложением Win32. Для использования файла можно воспользоваться средством POSIX (или любым другим), в котором применяется соответствующий внутренний синтаксис.

Кроме того, можно избежать стандартной проверки зарезервированных имен Win32, воспользовавшись некоторыми встроенными командами и специальным синтаксисом для указания пути файла. Например, команда Del в Windows XP позволяет удалить файл с названием «lpt1», если указан полный путь файла с помощью следующего синтаксиса команды:
del \\?\c:\путь_к_файлу\lpt1
Дополнительные сведения об удалении файлов с зарезервированными именами в Windows NT и Windows 2000 см. в следующей статье базы знаний Майкрософт:
120716 Удаление файлов с зарезервированными именами в Windows (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
Дополнительные сведения об удалении файлов с зарезервированными именами в Windows XP см. в следующей статье базы знаний Майкрософт:
315226 Удаление файлов с зарезервированными именами в Windows XP (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
Если открыть дескриптор файла с помощью обычного механизма Win32 «CreateFile», некоторые имена файлов резервируются для устройств DOS старого стиля. В целях обратной совместимости эти имена файлов не разрешаются, и они не могут быть созданы с помощью стандартных вызовов файлов Win32. Однако в файловой системе NTFS эти ограничения отсутствуют.

Программа Win32 может служить для обхода стандартной проверки имен при создании (или удалении) файла с помощью той же самой методики, которая используется для достижения папок, длина пути которых превышает максимальную. Кроме того, некоторые средства POSIX не подлежат проверке имен.

Причина 6. Имя файла содержит фрагмент, недопустимый в пространстве имен Win32

Невозможно удалить файл, имя которого включает недопустимый фрагмент (например, если имя файла содержит концевой пробел или точку или состоит только из пробелов). Для решения этой проблемы следует использовать средства с соответствующим внутренним синтаксисом для удаления файла. Для работы с этими файлами можно использовать некоторые средства с синтаксисом «\\?\», например:
del "\\?\c:\путь_к_файлу_содержащему_конечный_пробел "
Причина, вызывающая эту проблему, аналогична причине 4. Однако, если открыть файл, имя которого содержит концевой пробел или точку, с помощью стандартной команды Win32, эти пробелы или точки отсекаются до того, как файл фактически будет открыт. Поэтому при наличии в одной папке двух файлов с названием «AFile.txt» и «AFile.txt » (обратите внимание на пробел после имени файла) при попытке открыть второй файл с помощью стандартных вызовов Win32 будет открыт первый файл. Точно так же при попытке открыть файл с именем « » (символ пробела) с помощью стандартных процедур вызова Win32 будет открыта родительская папка файла. Поэтому попытка изменить параметры настройки безопасности подобных файлов в этой ситуации либо окажется безуспешной, либо приведет к непредвиденному изменению параметров настройки других файлов. Если это случается, пользователь может ошибочно предположить, что имеет разрешение на файл с запрещающим списком управления доступом.

Комбинация причин

Иногда может наблюдаться комбинация причин, усложняющая процесс удаления файла. Например, при входе в систему в качестве администратора можно столкнуться с комбинацией первой (нет разрешения на удаление файла) и пятой причины (имя файла содержит концевой символ, который приводит к вызову другого или несуществующего файла), в результате чего удаление файла невозможно. Попытка устранить первую причину путем смены владельца файла и добавления разрешений может не дать результата, поскольку файл все равно не может быть удален, так как редактор списка управления доступом в интерфейсе пользователя не может получить доступ к соответствующему файлу по причине 6.

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

Данная командная строка изменяет файл C:\путь_к_проблемному_файлу, содержащий конечный пробел, таким образом, что учетная запись домен\администратор становится владельцем файла и получает полный доступ к нему. Теперь можно удалить файл с помощью команды Del с тем же синтаксисом «\\?\».

Ссылки

Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
319368 При попытке удалить папки с подключенного диска пользователь получает сообщение об ошибке «Отказано в доступе» (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Свойства

Код статьи: 320081 - Последний отзыв: 3 декабря 2007 г. - Revision: 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 (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
  • 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