Как удалить папку, которая используется?

307989
Factor Mystic

Иногда, когда я работаю в Windows, я получаю это приглашение при попытке удалить каталог:

Folder In Use The action can't be completed because the folder is open in another program Close the folder and try again. 

Однако папка вообще не «используется», и у меня ее нет. Так как я могу удалить его до перезагрузки?

117
Я нахожу, что это происходит чаще всего при работе с Outlook и MSG-файлами, и в этом случае закрытие Outlook останавливает ошибку «Использование папки». См. Также [обсуждение этого вопроса сообщества Microsoft] (http://answers.microsoft.com/en-us/windows/forum/windows_7-files/in-windows-7-getting-error-the-action-cant-be / 449b2e05-8ed0-4a72-98bd-dde430d27e10? AUTH = 1). Air 8 лет назад 1

18 ответов на вопрос

159
bcorso

Есть родной графический интерфейс для Windows:

Пуск >> Все программы >> Стандартные >> Системные инструменты >> Монитор ресурсов (или Выполнить resmon.exe )

Вы можете найти «Связанные дескрипторы» с помощью окна поиска (обведено красным) и щелкнуть правой кнопкой мыши по процессу, который хотите завершить.


Как пример, на изображении ниже я не могу удалить свой каталог Eclipse. Поиск связанных с Eclipse дескрипторов показал, что у adb.exe есть дескриптор каталога. После завершения процесса adb я мог бы удалить каталог Eclipse.

enter image description here

Этот трюк высветил процесс, который приносил мне горе :) Pure.Krome 10 лет назад 4
Монитор ресурсов требует учетных данных администратора. Air 8 лет назад 1
У меня есть заблокированная папка на рабочем столе, которую монитор ресурсов не отображает как используемую. Ну что ж. sirdank 8 лет назад 0
заблокирован? Это должно решить конкретную ошибку в вопросе, то есть «папка открыта в другой программе». Это ваша ситуация? bcorso 8 лет назад 0
Решил проблему для меня. RubenGeert 8 лет назад 0
FWIW, поиск может выполняться довольно долго, прежде чем найти результаты (в моем случае минуты). Cedric Reichenbach 6 лет назад 0
73
Marc Reside

Этот ответ старый, но, похоже, все еще получает трафик. Как отмечено ниже, в Windows теперь есть встроенный инструмент:

Пуск → Все программы → Стандартные → Системные инструменты → Монитор ресурсов (или Запустите resmon.exe)

Вы можете получить больше информации в ответах ниже этого. Остальная часть этого ответа больше не актуальна.


Process Explorer от Sysinternals позволит вам осуществлять поиск по ручкам и библиотекам DLL. Найдите каталог и выясните, какой процесс «использует» эту папку.

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

Но как мне найти каталог, который используется процессом? Johnny_D 11 лет назад 2
Используйте Ctrl-F и введите имя папки выше той, которую вы пытаетесь удалить. MikeMurko 10 лет назад 1
Теперь есть родной графический интерфейс для Windows, см. Мой ответ ниже. bcorso 10 лет назад 4
* Встроенный графический интерфейс / встроенный / Windows (Resource Monitor) см. Ниже. Jamie Pate 10 лет назад 3
В моем случае Process Explorer не смог найти дескриптор, но Resource Monitor (см. Другой ответ) был в состоянии. Bart Verkoeijen 8 лет назад 0
7
Brant Bobby

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

Безопаснее сначала попытаться закрыть приложения, а не просто принудительно закрывать ручку.

Кстати хорошая статья. Важно прочитать. Pacerier 9 лет назад 0
7
Joe

Unlocker и WhoLockMe не работают на 64-битной Windows. Я использую LockHunter .

Unlocker поставляется для 64-битной системы. avirk 11 лет назад 2
lockhunter нашел для меня процесс блокировки, который ProcExp и ResMon не смогли найти. Clever Human 6 лет назад 0
6
Robert Collier

Этот сценарий REG предоставит вам пункт контекстного меню «Просмотр дескрипторов», вызываемый правой кнопкой мыши, который вызовет утилиту дескрипторов Sysinternals, чтобы увидеть все открытые дескрипторы файла или папки, по которым вы щелкнули правой кнопкой мыши.

Поместите файл handle.exe из Sysinternals в папку, доступную по вашему пути.

Windows Registry Editor Version 5.00  [HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\Handle] @="View &Handles"  [HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\Handle\command] @="cmd.exe /k handle -a -u \"%1\"" 
Почему бы просто не использовать версию интерфейса ProcessExplorer? Pacerier 9 лет назад 0
5
kpoehls

У меня такое было. Иногда я могу решить проблему, удалив сначала содержимое, затем папку (пустую).

Да, у меня это сработало! TigerTiger 11 лет назад 0
@Wbdvlpr, @ kpoehls, с чего бы это сработало? Я думаю, что это просто миф, и вам повезло. Pacerier 9 лет назад 0
3

Самый быстрый и простой подход состоит в том, чтобы использовать Handle, как уже упоминалось в slolife, а не в Process Explorer. Они оба от Марка Руссиновича @ Microsoft.

Не удивляйтесь, обнаружив, что explorer.exe является виновником, как я сделал сегодня. По-видимому, существует официальный способ перезапустить explorer.exe, но мне кажется, что он убивает его и снова запускает его снова в Диспетчере задач.

2
tghw

Когда я работал на XP, я использовал WhoLockMe, чтобы узнать, в каких программах открыты и заблокированы файлы. Самая последняя версия, которую я смог найти, не упоминает Vista, но она того стоит.

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

2
slolife

Я использую Handle от SysInternals (сейчас Microsoft). Вы можете ввести часть имени папки, чтобы увидеть, какой процесс имеет дескриптор этой папки, а затем убить дескриптор.

handle64.exe -nobanner "<path>" 

Например:

вывод команды из командной строки

Как уже упоминалось, убийство ручки может вызвать серьезные проблемы.

2
Synetech

Если под «не используется» вы имеете в виду отсутствие открытых дескрипторов, убедитесь, что служба Application Experience не отключена . Если это так, установите его вручную:

Run dialog (or command prompt):  sc config AeLookupSvc start= demand