В статье описываются способы и инструменты, с помощью которых можно прямо в текущем сеансе или с последующей перезагрузкой решить проблему переименования, перемещения или удаления файла или папки. Так, думаю каждый из пользователей Windows сталкивался хоть раз с окном с ошибкой Файл / Папка уже используется. Операция не может быть завершена, так как эти папка или файл открыты в другой программе:
Или более конкретное:
Начинаешь рыться в памяти, какое приложение по работе с файлом ты недавно открывал, рыскаешь по системному трею в панели задач в поисках программ, работающих фоном. Нет, после перезагрузки компьютера (а, если повезёт, и после перезагрузки проводника) файл можно будет удалить или переместить. А если даже после перезагрузки файл удаляться не собирается? Каким же процессом объект УЖЕ ИСПОЛЬЗУЕТСЯ? А в Windows ещё со времён выпуска модели Vista для этого есть уже пара встроенных и относительно простых решений. Одно, правда, требует небольшой предварительной настройки. И называется этот инструмент OpenFiles. Также рассмотрим работу программ, с помощью которых виновника этой ошибки легко обнаружить. В конце статьи небольшой ролик, в котором я использую некоторые из описанных инструментов.
Как удалить неудаляемый файл при помощи Unlocker?
Что мешает удалить, переименовать или переместить объект: подготовимся.
Перед тем, как начать его использовать, запустите командную консоль от имени администратора и введите команду на активацию режима наблюдения:
openfiles /local on
После перезагрузки проверим состояние инструмента:
Выгрузка результатов займёт некоторое время, так что я сразу оформлю запрос с выводом в текстовый файл куда-нибудь поближе. К примеру, на Рабочий стол Windows:
openfiles > %userprofile%\desktop\процессы.log
В текстовом редакторе Notepad ++, предварительно настроенном на кириллицу (можно и в обычном Блокноте), можно посмотреть на список связки процесс-программа-файл:
Быть может, кому-то удобнее сохранить вывод запроса в буфер обмена, а потом вставить в какой-то документ:
openfiles | clip
Но ладно, мы подбираемся к нашей задаче: всё-таки, что мешает закрыть файл? Комбинируем с FindString (эта занимается обнаружением указываемой части текста в файлах, являясь неким аналогом Линуксового grep) и ищем, почему не поддаётся удалению, например, текстовый документ:
openfiles | findstr /i document
Потенциальные виновники, связанные с файлом, обнаружены, можно отправляться в Диспетчер задач и убить процесс, удалив затем файл привычным путём. Кстати говоря, сразу после активации инструмента openfiles, у такого метода появляется возможность обнаруживать блокировщика удаления/перемещения/переименования в графическом интерфейсе. Отправляемся в Монитор ресурсов из строки поиска WIN + R:
resmon.exe
и вводим тот же запрос в части Связанных дескрипторов:
Думаю, после таких манипуляций вы сможете прийти к правильному выводу, что мешает удалить файл и как изолировать виновника.
Как найти процессы, блокирующие перемещение или переименование объекта?
Монитор ресурсов Windows.
О его работе мы уже упомянули. Вариант с Монитором ресурсов подходит для распознавания процессов ВООБЩЕ, связанных с определёнными устройствами. Например, если вы используете карты или флешку, и, завершая с ними работу, собираетесь изъять устройство из порта. Как примерный пользователь вы обращаетесь к системному трею за Безопасным извлечением устройства. Но Windows сообщает вам, что устройство занято и на этот момент извлечено быть не может. Монитор поможет выцепить этот самый процесс-виновник. В знакомом уже пункте Связанных дескрипторов введите присвоенную устройству букву:
Process Explorer
Программа Process Explorer – инструмент бесценный. Смысл работы в нашем случае тот же: запускаем исполнительный файл программы procexp64.exe от имени администратора, и после появления окна зажимаем одновременно клавиши Ctrl +Shift+F для вызова окна поиска по дескрипторам. В строке Handle or DLL substring вводим имя объекта, соблюдая полное имя и регистр символов. Щёлкаем по кнопке Search. Результат тот же:
Для дальнейшей работы с объектом процесс нужно удалить. А теперь обещанный ролик:
Успехов всем.