четверг, 3 февраля 2011 г.

Как узнать, кто заблокировал файл или папку

Я регулярно пользуюсь утилитами Sysinternals и хочу поделиться одним из cпособов как при помощи Process Explorer выяснить какой процесс заблокировал доступ к файлу или папке.

Использовать утилиты очень удобно – они бесплатны, не требуют инсталляции и могут быть запущены без предварительного скачивания из интернета (см http://live.sysinternals.com/). Последние 2 пункта делают их очень удобными при анализе и устранении проблем на серверах.

Я недавно завел Ютуб-канал, где выкладываю видео по теме блога. Приглашаю Вас посмотреть и подписаться что бы не пропустить новые выпуски.



Итак, как же узнать, кто держит тот или иной файл или папку.

Для скриншотов я смоделировал такую ситуацию нарочно, открыв в Word файл "D:\temp\Doc1.docx" и пытаясь его в это же время удалить в проводнике. При попытке удалить файл получаю следующее сообщение

image

Поищем этот документ в Process Explorer: Find->Find Handle or DLL…

В появившемся окне вводим имя заблокированного файла и жмем Search

image

Двойной клик на найденном файле и вы переходите в дерево процессов.

В нижем списке выбираете ваш файл (он подсвечен серым) и в контекстном меню выбираете команду Close Handle. Соглашаетесь с предупреждением, что приложение может упасть и все. Файл разблокирован и может быть спокойно удален.

Есть еще один способ сделать то же самое – воспользоваться утилитой Unlocker. Она тоже бесплатна и ее можно скачать с сайта разработчика http://cedrick.collomb.perso.sfr.fr/unlocker/.

Утилита требует инсталляции . После инсталляции, в проводнике, в контекстном меню появится пункт Unlocker.

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

image

Это конечно проще чем с Process Explorer :). Еще один плюс – если файл нельзя удалить сразу, например какой-нибудь системный файл, то Unlocker может предложить его удалить во время перезагрузки системы.