Как система (т. е. WinXP) обрабатывает «заблокированные» файлы?

Как система (т. е. WinXP) обрабатывает «заблокированные» файлы?

Как именно операционная система обрабатывает заблокированные файлы?

Или, если быть точным, почему иногда я не могу удалить заблокированный файл из проводника Windows, но если я открою командную строку в соответствующем каталоге, то смогу удалить его оттуда?

решение1

Когда процесс открывает дескриптор файла или каталога, он указывает, какой уровень общего доступа ему нужен. Уровень общего доступа может быть любой комбинацией флагов FILE_SHARE_DELETE, FILE_SHARE_READ и FILE_SHARE_WRITE. Названия флагов довольно очевидны. Если я указываю FILE_SHARE_READ, это позволяет другим процессам читать файл, FILE_SHARE_WRITE позволяет другим процессам записывать файл (возможно, изменяя его у меня под ногами), а FILE_SHARE_DELETE позволяет другим процессам удалять файл (хотя я думаю, что он на самом деле не удаляется, пока я не закрою свой дескриптор файла).

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

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

Дж.Р.

решение2

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

Если вы хотите узнать, какой процесс использует файл (чтобы вы могли временно завершить процесс и снять блокировку с файла), используйтеИсследователь процессовот Microsoft/Sysinternals.

  • Откройте меню «Найти» и выберите «Найти дескриптор или DLL...».
  • Введите имя файла, который вы не можете удалить и который заблокирован каким-то процессом.
  • После ввода поисковой фразы нажмите кнопку «Поиск».

Если файл используется Windows, вы можете использоватьMoveOnBootот Gibin Software для удаления заблокированного файла после перезагрузки.

решение3

Я предполагаю, что у вас есть какое-то стороннее расширение в проводнике, которое открывает файл на некоторое время, чтобы просканировать файл, заставляя проводник его заблокировать. Эта проблема возникает только с большими файлами? Блокировки есть блокировки в мире Windows, ни одна командная строка не может удалить заблокированный файл (хотя, как отмечено выше, есть способы закрыть блокировку, а затем удалить файл)

Связанный контент