Файл занят другим процессом, заблокирован другим процессом или открыт в другой программе — простое решение
Распространенная проблема при попытке удалить, переименовать, переместить или изменить файл или папку — сообщение о том, что процесс не может получить доступ к файлу, так как этот файл занят другим процессом, о том, что папка или файл открыты в другой программе и аналогичные.
В этой простой инструкции новый простой способ узнать, какой именно процесс мешает действиям с файлом или папкой в Windows 11 и Windows 10, закрыть такую программу и выполнить требуемые изменений. На близкую тему может быть полезным: Как удалить файл, который не удаляется в Windows.
File Locksmith — новая функция Microsoft PowerToys для разблокировки файлов
Заблокированный другим процессом файл или папка — типичная ситуация, при этом Windows не всегда сообщает пользователю, о каком именно процессе идёт речь.
На сайте уже несколько раз обновлялся обзор полезной и бесплатной утилиты Microsoft PowerToys, содержащей набор инструментов для работы в системах Windows 10 и Windows 11. В начале ноября в ней появилась ещё одна возможность — File Locksmith, которая и поможет в рассматриваемой ситуации.
File Locksmith позволяет легко определить, какие процессы используют файл или папку (а точнее — её содержимое) и быстро закрыть эти процессы. Далее подробно о том, как именно работает функция:
- Установите Microsoft PowerToys, если ещё не установили. Проще всего это сделать из магазина приложений Microsoft Store используя поиск в магазине или ссылку https://aka.ms/getPowertoys, также есть другие способы загрузки: https://learn.microsoft.com/ru-ru/windows/powertoys/install
- После первого запуска приложения может потребоваться перезапуск PowerToys от имени администратора в главном окне приложения (в моем тесте функция File Locksmith не появилась в меню до выполнения перезапуска на одном из устройств).
- В параметрах Microsoft PowerToys убедитесь, что функция File Locksmith включена.
- Нажмите правой кнопкой мыши по файлу, который занят другим процессом и выберите пункт меню «Какие процессы используют этот файл?». В Windows 11 потребуется предварительно открыть классическое контекстное меню, нажав «Показать дополнительные параметры».
- Откроется окно со списком процессов, использующих этот файл. Если процесс не отображается, выполните перезапуск окна с правами администратора, нажав по значку справа вверху.
- Раскрыв свойства процесса, вы можете узнать его идентификатор (например, для завершения вручную), а также от имени какого пользователя он запущен.
- Действие по проверке использующих элемент процессов можно применять и к папке, в таком случае будет отображаться список всех процессов, использующих её содержимое, а раскрыв сведения можно получить информацию о том, какие именно файлы использует этот процесс.
- И, самое главное, прямо в окне File Locksmith можно завершить процесс. Однако будьте осторожны при завершении системных процессов Windows.
Надеюсь, новый инструмент будет полезен. Конечно, есть и другие возможности, например, многие используют Unlocker, но вариант с File Locksmith куда более безопасен для пользователя, на мой взгляд.
Ever wondered which program has a particular file or directory open? Quite often, when trying to delete a folder, Windows reports this:
Folder In Use
The action can't be completed because the folder or a file in it is open in another program
This error also happens with a file, when we tried to move a file, or delete those file. How we can find out which program or application is currently using it and preventing us to delete/move it? To get the process holding those folder or file, we can use these two utilities:
- Resource Monitor
- Process Explorer
Resource Monitor
For Windows 7 and above, you can use the built-in Resource Monitor.
Open Resource Monitor, which can be found
- By searching for resmon.exe in the start menu, or
- As a button on the Performance tab in your Task Manager
Resource Monitor from Task Manager’s Performance Tab
From CPU tab, use the search field in the Associated Handles section
Resource Monitor
When you’ve found the handle, you can identify the process by looking at the Image and/or PID column. You can then close the application if you are able to do that, or just right-click the row and you’ll get the option of killing the process (End Process) right there.
Process Explorer
Process Explorer shows you information about which handles and DLLs processes have opened or loaded.
- Open Process Explorer (running as «administrator») by running procexp.exe or procexp64.exe.
- Enter the keyboard shortcut Ctrl+F. Alternatively, click the “Find” menu and select “Find a Handle or DLL”.
Process Explorer — Find Handle or DLL
- Type in the name of the locked file or other file of interest in the Search dialog box, then click «Search». Partial names are usually sufficient.
- A list will be generated. There may be a number of entries. Click one of the entry, it’ll «Refreshing handles».
Process Explorer — Search
Same as Resource Monitor, an individual handle in the list can be killed by selecting it and pressing the delete key (or Close Handle). However, please be careful when deleting handles, as system instabilities may occur. Rebooting your system maybe will free the locked file/folder.
Process Explorer — Close Handle
Handle is a command line version of Process Explorer.
My Take
I prefer to use Resource Monitor compare to Process Explorer since Process Explorer is slower (especially during «Refreshing handles» process). If I can’t find the handle in Resource Monitor, then I use Process Explorer.
When you try to open, delete, move, rename or edit a file, the action fails because a process is using the file and thus Windows returns an error that reads “”File In Use – the action can’t be completed because the file is open in another program“.
In some cases, Windows may prompt the error and tell you the which program is using the file, but in other cases, it will just show “open in another program” which you will have to figure it out yourself.
This guide will show you several methods on how to find out which process is currently using a specific file in Windows 11, and how to unlock a file that is locked by a process.
Find which process is using a file in Windows 11
In Windows 11, you can quickly check which process is using a file without installing any third party software. You can do so using the Resource Monitor tool in Windows 11, or by using a command line in Windows PowerShell or Command Prompt.
Check which process is locking a file using Resource Monitor
Resource Monitor is a Windows built-in tool that allows you to monitor resource consumption such as CPU, memory, disk and network usage of active processes in Windows 11. There is also a section called Associated Handles which you can search for the process that is using and locking a file by entering the name of the locked file.
- First, open Resource Monitor by typing resmon in the Start and hit Enter.
- In the Resource Monitor window, go to the CPU tab.
- Next, click on Associated Handles to expand the section.
- In the search box next to Associated Handles, type the name of the file that is locked by a program, then hit Enter to search.
- The search result will return any process it finds to be locking the file.
In the example above, I have a file named sample.pdf which was locked by Adobe Acrobat Reader. Thus, when I search for sample.pdf in the Associated Handles, it returned AcroRd32.exe as the search result, which is the process that was locking the sample.pdf file.
Once you know which process is locking the file, you can then terminate the process by either closing the program manually or by killing the task via Task Manager so that you can perform action on that particular file.
Tip: Alternatively, you can also open Resource Monitor through Task Manager (Ctrl + Shift + Esc) > Performance > Open Resource Monitor.
Windows PowerShell / Command Prompt
To identify which process is using a file via Windows Terminal (PowerShell) or Command Prompt in Windows 11, we need to use a command-line utility called Handle which allows users to tell which process is locking a specific file.
However, Handle is not included in Windows by default. You will need to first download it from https://docs.microsoft.com/en-us/sysinternals/downloads/handle.
The file you will be downloading is a zip file that contains the handle.exe. Once downloaded, extract the zip file to anywhere you want.
To correctly use handle.exe as a command line to find which process is using a specific file, in the folder where you’ve unzipped the handle.exe, right-click in the folder and select “Open in Windows Terminal” to open Windows PowerShell in this directory.
In the PowerShell window, enter the following command.
.\handle.exe -a -u "path to the locked file"
For example, to find the process that is locking my sample.pdf, I need to enter the following command.
.\handle.exe -a -u "C:\Users\alvin\Desktop\sample.pdf"
If you run Command Prompt instead, use the following command. Make sure the command prompt is opened in the folder where you’ve extracted the handle.exe. Otherwise you will have to enter the full path to the handle.exe instead of just handle.exe.
handle.exe -a -u "path to the locked file"
How to unlock a file locked by a process using Unlocker
If you don’t mind downloading and installing a third party software, we recommend Unlocker by IObit. Unlocker is a simple utility tool for Windows that is able to identify the process that is locking a file and unlock the file directly should you choose to.
To learn how to unlock a locked file in Windows 11 using Unlocker, read: How to Force Delete a File in Use by Another Program on Windows 11/10.
Я просматривал рабочий календарь, когда почтовая программа Outlook 2010 внезапно сообщила об ошибке и закрылась. После перезапуска она не смогла открыть OST-файл, и сегодня я расскажу, как решил эту проблему за три минуты.
При запуске программа выдавала такую ошибку:
На работе у меня ОС и программы с английским интерфейсом, поэтому я приведу эквивалентный текст ошибки из русской версии Office.
Выполнен выход из Microsoft Outlook без правильного закрытия файла данных Outlook. Необходимо перезапустить Microsoft Outlook. Если ошибка повторится, обратитесь в службу поддержки.
Сообщение не блистало информативностью, а запуск почтового клиента в безопасном режиме, удерживая нажатой клавишу Ctrl, ничего не менял.
Я открыл папку программы и запустил диагностическую утилиту scanpst.exe. Она не смогла исправить проблему, но задала конкретное направление для поиска.
Суть сообщения сводилась к тому, что OST-файл занят каким-то другим приложением, что и являлось препятствием для Outlook. Вы уже догадались, какую утилиту я запустил дальше?
В Process Explorer я нажал Ctrl + F и ввел в поиск .ost. В результатах немедленно отобразился «захватчик». Щелкнув по нему, я перешел в нижнюю панель Process Explorer и выбрал в контекстном меню команду Close Handle.
Увеличить рисунок
Это решило проблему! Почтовая программа запустилась нормально, и я вернулся к работе.
Что делать, если веб-камера используется другим приложением
В комментариях читатель Игорь задал вопрос, можно ли использовать Process Explorer, чтобы определить, какое приложение использует веб-камеру. Да, процесс аналогичный, но искать нужно:
#vid
Я в курсе, что существует Unlocker, но его надо было еще скачать, а утилита Process Explorer находилась под рукой. К тому же, мораль записи не только в этих двух программах. Ведь прежде чем применять их, нужно было выйти на причину проблемы.
Upd. 11-Мар-13. Хотелось бы дополнить заметку моментами, всплывшими в ее обсуждении:
- Если ничего нет под рукой, можно попытаться переименовать файл. Проводник может подсказать программу, использующую его.
- В Windows 7 и выше можно воспользоваться встроенной программой «Монитор ресурсов» (resmon), где на вкладке CPU есть поиск дескрипторов.
- Утилита NoVirus Thanks FileGovernor (описание)
- Утилита NirSoft OpenFilesView (работает с ограничениями на х64).
А вам приходилось использовать Unlocker или Process Explorer в подобных ситуациях? Напишите в комментариях, какую из утилит вы применяли и в чем была проблема!
Иногда при попытке удалить, переименовать или переместить какой-то файл в Windows вы можете получить сообщение, что файл занят/заблокирован/используется) другим процессом. Чаще всего имя программы, которая держит файл открытым указывается прямо в окне сообщения File Explorer. Чтобы снять блокировку файла достаточно просто закрыть эту программу. Но бывает ситуации, когда какой-то файл и библиотека используется неизвестным или системным процессом. В этом случае снять блокировку с файла немного сложнее.
Многие приложения открывают файлы в монопольном (эксклюзивном) режиме. При этом файл блокируется файловой системой от операций ввода вывода других приложений. Если вы закрываете приложение, блокировка с файла снимается.
Сообщение о блокировке файла может выглядеть по-разному. Например в следующем примере указан тип файла и с каким приложением он ассоциирован:
File/Folder in Use. The action can’t be completed because the file is open in another program. Close the folder or file and try again.
Файл уже используется. Операция не может быть завершена, так как файл или папка открыта в другой программе. Закройте файл и повторите попытку.
В этом случае вы можете легко понять какое приложение заблокировало файл и закрыть его.
Однако иногда можно увидеть более интересное сообщение, о том, что файл заблокирован неизвестным или системным процессом Windows. Это может быть, как процесс самой ОС Windows, так и другие процессе, работающий с правами System, например, антивирус, агент резервного копирования, база данных mssql и т.д.):
The action can’t be completed because the file is open in SYSTEM.
Файл уже используется. Действие не может быть выполнено, так как этот файл открыт в System.
Попробуем разобраться, как понять какой программой, службой или системным процессом Windows занят файл, как разблокировать файл и можно ли разблокировать файл не закрывая родительский процесс.
Самый простой вариант разблокировать файл – завершить процесс, которые его заблокировал. Но это не всегда возможно, особенно на серверах.
Чаще всего для поиска процесса, который заблокировал файл рекомендуют использовать утилиту Unlocker. Лично я
Unlocker
не использую, т.к. она не позволяет получить подробную информацию о процессе или цепочке процессов, которые заблокировали файл. Также нельзя освободить конкретный файл, занятый процессом – приходится завершать приложение целиком.
Кроме того, это сторонняя утилита, при установке которой нужно быть внимательным, т.к. в процессе она предлагает установить пачку ненужные программы в нагрузку.
Когда процесс в Windows открывает файл, этому потоку ввода/вывода назначается файловый дескриптор (handler). Процесс и его дочерние процессы получают доступ к файлу по этому дескриптору. Через Window API вы можете послать сигнал файловой системе на освобождение данного дескриптора и снятие блокировки с файла.
Принудительное закрытие файловых дескрипторов может вызвать нестабильную работу приложения или компьютера. Если вы не знаете, к чему приведет закрытие дескриптора файла для конкретного приложения, то не пытайтесь выполнить это на продуктивном сервере без предварительного теста.
Как разблокировать файл с помощью Process Explorer?
ProcessExplorer это бесплатная утилита из набора системных утилит Sysinternals, которую можно скачать на сайте Microsoft (https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer). Попробуем с помощью Process Explorer найти, какой процесс заблокировал определенный файл и освободить этот файл, сбросив файловый дескриптор процесса.
- ProcessExplorer не требует установки, просто скачайте распакуйте и запустите с правами администратора
procexp.exe
; - Выберите меню Find -> Find Handle or DLL (или нажмите
Ctrl-F
); - Укажите имя файла, который нужно разблокировать и нажмите Search;
- Выберите нужный файл. Процесс, который открыл файлы будет выделен в дереве процессов. Можно завершить этот процесс, щелкнув по нему правой кнопкой и выбрав Kill Process Tree. Но можно попробовать закрыть дескриптор файла, не завершая процесс целиком. Дескриптор файла, который вы искали, автоматически выделяется в нижней панели Process Explorer. Щелкните по дескриптору правой кнопкой и выберите Close handle. Подтвердите закрытие файла.
Если у вас в Process Explorer не отображается нижняя панель со списком открытых дескрипторов процесса, включите пункт меню View -> Lower Pane View -> Handles
Итак, вы закрыли дескриптор файла, не завершая родительский процесс. Теперь вы можете спокойно удалить или переименовать файл.
Сброс дескриптора файла с помощью утилиты Handle
Handle – это еще одна утилита командной строки из комплекта инструментов Sysinternals (доступна для скачивания на сайте Microsoft (https://docs.microsoft.com/en-us/sysinternals/downloads/handle. Она позволяет найти процесс, который заблокировал ваш файл и снять блокировку, освободив дескриптор.
- Скачайте и распакуйте архив с утилитой Handle;
- Запустите командную строку с правами администратора и выполните команду:
handle64.exe > listproc.txt
Данная команда сохранит список открытых дескрипторов в файл. Можно вывести дескрипторы для каталога, в котором находится файл, который вы хотите изменить:
Handle64.exe -a C:\Some\Path
или конкретного процесса:
handle64.exe -p winword.exe
- Откройте файл listproc.txt в любом текстовом редакторе и найдите строку, в которой указано имя заблокированного файла. Скопируйте ID дескриптора файла (значение в hex формате). Затем поднимитесь немного выше к разделу, в котором указан процесс, являющийся владельцем данного дескриптора и запишите его ID. Для процесса запущенного от имени системы скорее всего будет PID 4.
Для некоторых системных процессов handle.exe вернет следующий текст:
wininit.exe pid: 732 \<unable to open process>
. Это означает, что вы не может получить информацию об этих системных процессах (даже с правами администратора). Для получения дескрипторов файлов, открытых такими процессами, запустите командную строку с правами System и попробуйте получить список дескрипторов еще раз. - Теперь вернитесь в командную строку и сбросьте дескриптор файла по полученным HandleID и ProcessID. Формат команды следующий:
handl64e.exe -c HandleID -p ProcessID
Например:
handl64e.exe -c 18C -p 18800
- Утилита запросит подтвердить закрытие файла для указанного процесса. Подтвердите, нажав y -> enter
Если система отреагирует на закрытие файла корректно, вы разблокируете ваш файл без необходимости завершать процесс или перезагружать сервер/компьютер.