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

Unable to delete or move or perform any action on a file because it is locked by a process? Find out which process is locking a file in Windows 11/10 using various methods discussed in this article.

Many times, when we attempt an action (delete, rename, copy, etc.) on a file, we get a File in Use dialog box showing a prompt that “The action can’t be completed because the file is open in another program“. In some cases, it will show the process or program name that is using the file. But, a lot of times, it doesn’t.

Now, how to tell which process has a file open? If it is urgent, you need to identify the process locking a file and then end the process to modify the target file. In this guide, we will be discussing different methods to check the process that is holding a file in Windows 11/10.

How to tell which process is locking a file in Windows 10

Here are the different methods to identify the process that is locking a file in Windows 11/10:

  1. Check the process that is locking a file using Resource Monitor.
  2. Use SysInternals Process Explorer to identify the process that is locking a file.
  3. Find out through Command Prompt using the Handle tool.
  4. Use OpenedFilesView freeware to identify the process holding a file.

Let’s elaborate on these methods now.

1] Check the process that is locking a file using Resource Monitor

Using Resource Monitor, you can identify the process or service locking a file. It is an inbuilt utility in Windows 10 that helps you monitor CPU usage, memory, disk network, file handles, etc.

Open Run app by pressing Windows + R hotkey and then type resmon in it. Press the OK button and Resource Monitor will open up.

In the Resource Monitor window, go to the CPU tab and expand the Associated Handles option. Now, in the search box, type the name of the file that is showing locked by a process and press Enter button. It will show you a list of processes holding the target file.

You can right-click on the process and select the End Process option to end it. After the process ends, try performing the action you wanted to on the previously locked file.

2] Use SysInternals Process Explorer to identify the process that is locking a file

Another option to identify the process or service holding a file is SysInternals Process Explorer. It is an advanced utility to find out detailed information regarding running processes on your system. To identify the process holding a file through it, you can follow below steps:

Firstly, download and run SysInternals Process Explorer on your PC. Now, in the Process Explorer window, go to the File menu and click on the Find Handle or DLL option. Next, enter the file name in the Process Explorer Search dialog window and press the Search option. All the processes that are using the file you entered will show up in the results.

Right-click on the identified process in the Process tab and then close it.

Now, check with the file if it is still held or locked by a process or not.

Related: The process cannot access the file because it is being used by another process.

3] Find out through Command Prompt using Handle tool

Handle is a command-based utility to tell which process has a file open. It is basically a command-line version of the above discussed SysInternals Process Explorer. You can follow the below steps to check the process holding a file in command prompt using this tool:

Download Handle from microsoft.com and extract the ZIP folder. Now, open CMD in the extracted folder. In the Command Prompt, enter a command with the following syntax:

handle.exe -a -u <filename-with-path>

For example:

handle.exe -a -u "C:\Users\KOMAL\Documents\Sample Files\twc.pdf"

As you enter the command, it will display a list of processes holding the file with process ID and username.

I tried to check the same by entering just the filename without the full path, it worked. But, it may not work for all files. So, it is recommended to enter the location of the locked file.

After identifying the process, you can close it from Task Manager.

4] Use OpenedFilesView freeware to identify the process holding a file

OpenedFilesView is a portable application to view all your opened files and the processes holding them. You can download its ZIP folder, extract it, and then run its OpenedFilesView.exe file to launch its interface. It will then display all currently opened files with respective details including process name, process ID, process path, file permissions, target file path, etc.

Locate your target file and check which process is holding it. Also, you can use its Find option to quickly search for a locked file and the associated process. After finding the process, right-click on the file and close all the processes holding it.

TIP: You can also use File Locksmith PowerToy.

Hope this guide helps you identify the process of holding a file and then closing it.

Now read: Delete Locked Files, and fix File Is Locked error.

Иногда при попытке удалить, переименовать или переместить какой-то файл в 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.

Файл уже используется. Действие не может быть выполнено, так как этот файл открыт в 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 найти, какой процесс заблокировал определенный файл и освободить этот файл, сбросив файловый дескриптор процесса.

  1. ProcessExplorer не требует установки, просто скачайте распакуйте и запустите с правами администратора
    procexp.exe
    ;
  2. Выберите меню Find -> Find Handle or DLL (или нажмите
    Ctrl-F
    ); proc explorer - поиск открытых файлов
  3. Укажите имя файла, который нужно разблокировать и нажмите Search;
  4. Выберите нужный файл. Процесс, который открыл файлы будет выделен в дереве процессов. Можно завершить этот процесс, щелкнув по нему правой кнопкой и выбрав Kill Process Tree. Но можно попробовать закрыть дескриптор файла, не завершая процесс целиком. Дескриптор файла, который вы искали, автоматически выделяется в нижней панели Process Explorer. Щелкните по дескриптору правой кнопкой и выберите Close handle. Подтвердите закрытие файла. process explorer найти и завершить дескриптор процесса

    Если у вас в Process Explorer не отображается нижняя панель со списком открытых дескрипторов процесса, включите пункт меню View -> Lower Pane View -> Handles

Итак, вы закрыли дескриптор файла, не завершая родительский процесс. Теперь вы можете спокойно удалить или переименовать файл.

Сброс дескриптора файла с помощью утилиты Handle

Handle – это еще одна утилита командной строки из комплекта инструментов Sysinternals (доступна для скачивания на сайте Microsoft (https://docs.microsoft.com/en-us/sysinternals/downloads/handle. Она позволяет найти процесс, который заблокировал ваш файл и снять блокировку, освободив дескриптор.

  1. Скачайте и распакуйте архив с утилитой Handle;
  2. Запустите командную строку с правами администратора и выполните команду:
    handle64.exe > listproc.txt
    утилита Handle.exe  Данная команда сохранит список открытых дескрипторов в файл. Можно вывести дескрипторы для каталога, в котором находится файл, который вы хотите изменить:
    Handle64.exe -a C:\Some\Path
    или конкретного процесса:
    handle64.exe -p winword.exe
  3. Откройте файл listproc.txt в любом текстовом редакторе и найдите строку, в которой указано имя заблокированного файла. Скопируйте ID дескриптора файла (значение в hex формате). Затем поднимитесь немного выше к разделу, в котором указан процесс, являющийся владельцем данного дескриптора и запишите его ID. Для процесса запущенного от имени системы скорее всего будет PID 4. список открытых дескрипторов файлов в windows

    Для некоторых системных процессов handle.exe вернет следующий текст:
    wininit.exe pid: 732 \<unable to open process>
    . Это означает, что вы не может получить информацию об этих системных процессах (даже с правами администратора). Для получения дескрипторов файлов, открытых такими процессами, запустите командную строку с правами System и попробуйте получить список дескрипторов еще раз.

  4. Теперь вернитесь в командную строку и сбросьте дескриптор файла по полученным HandleID и ProcessID. Формат команды следующий:
    handl64e.exe -c HandleID -p ProcessID
    Например:
    handl64e.exe -c 18C -p 18800
    handl64e - закрыть дескриптор открытого файла
  5. Утилита запросит подтвердить закрытие файла для указанного процесса. Подтвердите, нажав y -> enter

Если система отреагирует на закрытие файла корректно, вы разблокируете ваш файл без необходимости завершать процесс или перезагружать сервер/компьютер.

Наверное, каждому из пользователей Windows хотя бы раз приходилось иметь дело с так называемыми неудаляемыми файлами и папками. Как правило, причиной невозможности удалить, переместить или хотя бы переименовать такой объект является использование его каким-то процессом, причём необязательно чтобы этот процесс был системным. Это может быть антивирус, архиватор или какой-нибудь редактор.

Обычно в окне с ошибкой прямо указывается, что за процесс препятствует дальнейшим действиям с объектом, но бывает и так, что вместо этого сообщается, что файл или папка открыты в другой программе. Это понятно, но вот в какой именно?

Ошибка

Так вот, определить её очень просто. Во всех популярных версиях Windows (начиная с 7) есть такая встроенная утилита как «Монитор ресурсов», предназначающаяся для контроля использования программных и аппаратных ресурсов. В её поле зрения попадают все процессы, в том числе и зависшие. Она то как раз и подскажет, что именно держит файл или папку.

Нажмите сочетание клавиш Win + R и выполните в открывшемся окошке команду resmon.

Программа выполнить

Откроется окно монитора ресурсов. Переключитесь в нём на вкладку «ЦП» и введите в поле «Поиск дескрипторов» название объекта, при удалении, перемещении или переименовании которого возникла ошибка. Результаты отобразятся тут же, чуть ниже. В нашем примере удалению папки «Всякая всячина» препятствовал архиватор WinRAR, но в самом окне с описанием ошибки об этом ничего не говорилось.

Монитор ресурсов

Вот так всё просто. Кстати, если удерживающий процесс не является критическим, его можно завершить прямо из окна монитора ресурсов.

Завершение процесса

После этого проблемный файл, папка или другой объект легко смогут быть удалены обычным способом.

Загрузка…

При помощи Process Explorer выяснить какой процес заблокировал досуп к файлу или папке.
Утилиты не требуют инсталяции (http://live.sysinternals.com/). 
Для скриншотов я смоделировал такую ситуацию нарочно, открыв в ворде файл «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 может предложить его удалить во время перезагузки системы.
С помощью Unlocker можно определить блокирующий процесс не только для файлов и папок, но и для дисков. Это иногда полезно при использовании USB-флэшек, внешних винчестеров и т.п. При попытке отключения появляется сообщение о том, что устройство занято и не может быть отключено. Тогда запускаем Windows Explorer и открываем контекстное меню для диска, который мы хотим отключить. Unlock сработает наверняка.

Lock Hunter:http://lockhunter.com/

Источник: http://andybor.blogspot.com/2011/02/blog-post.html

Вопрос:

Я хочу знать, кто блокирует файл на сетевом ресурсе.

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

Handle.exe, Process Explorer и PsFile, по-видимому, ограничены файлами на локальной машине, поэтому они не работают для меня.

Лучший ответ:

На всякий случай кто-то ищет решение для системы на базе Windows или NAS:

В Windows есть встроенная функция, которая показывает, какие файлы на локальном компьютере открыты/заблокированы удаленным компьютером (который имеет файл, открытый через общий ресурс файла):

  • Выберите “Управление компьютером” (откройте “Управление компьютером” )
  • нажмите “Общие папки”
  • выберите “Открыть файлы”

Там вы можете даже сильно закрыть файл.

Ответ №1

На серверах Windows 2008 R2 у вас есть два способа просмотра файлов, открытых и закрывающих эти соединения.

Управление доступом и хранением

Диспетчер серверов > Роли > Файловые службы > Управление общим хранилищем и хранилищем > щелкните правой кнопкой мыши на SaSM > Управление файлом Open

Через OpenFiles

CMD > Openfiles.exe/query/s SERVERNAME

См. http://technet.microsoft.com/en-us/library/bb490961.aspx.

Ответ №2

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

psfile \\remote-share

(замените “remote-share” на имя вашего файлового сервера), и он перечислит каждый открытый документ на этом ресурсе вместе с тем, кто его открыл, и идентификатор файла, если я хочу, чтобы файл был закрыт. Для меня это очень длинный список, но его можно сузить, введя часть пути:

psfile \\remote-share I:\\Human_Resources

Это довольно сложно, так как в моем случае этот удаленный общий ресурс монтируется как Z: на моем локальном компьютере, но psfile идентифицирует пути, как они определены на удаленном файловом сервере, что в моем случае я: (ваш будет будь другим). Мне просто пришлось расчесывать результаты моего первого запуска psfile, чтобы увидеть некоторые из путей, которые он вернул, а затем запустить снова с частичным путем, чтобы сузить результаты.

Опционально PsFile позволит вам указать учетные данные для удаленного доступа, если вам нужно предоставить их для доступа.

Наконец, небольшой совет: если кто-то нажимает на файл в Проводнике Windows и разрезает или копирует файл с намерением вставить его в другое место, это действие также блокирует файл.

Ответ №3

Если это просто случай познания/видения того, кто находится в файле в любое конкретное время (и если вы используете окна), просто выберите файл “view” как “details”, то есть вместо Thumbnails, фрагментов или значков и т.д. После просмотра “подробностей” по умолчанию вы будете показаны;
– Имя файла
– Размер
– Тип и
– Дата изменения

Все, что вам нужно сделать сейчас, – это щелкнуть правой кнопкой мыши по всей панели инструментов (имя файла, размер, тип и т.д.), и вам будет предоставлен список других параметров, которые может отображать панель инструментов.

Выберите “Владелец”, а в новом столбце будет указано имя пользователя, использующего файл, или кто изначально его создал, если никто его не использует.

Это может быть особенно полезно при использовании общей базы данных MS Access.

Ответ №4

Частичный ответ: с помощью Process Explorer вы можете просматривать дескрипторы сетевого ресурса , открытого с вашего компьютера.

Используйте меню “Найти дескриптор”, а затем вы можете ввести такой путь

\Device\LanmanRedirector\server\share\

Ответ №5

Сессии обрабатываются устройством NAS. То, что вы запрашиваете, зависит от устройства NAS и ничего общего с окнами. Вам нужно будет заглянуть в прошивку вашего NAS, чтобы посмотреть, что она поддерживает. Единственный способ – обнюхивать пакеты и самостоятельно их выполнять.

Ответ №6

звучит так, как будто у вас такая же проблема, я пытался решить здесь. в моем случае это файловый сервер Linux (работает самба, конечно), поэтому я могу войти в систему и посмотреть, какой процесс блокирует файл; к сожалению, я не нашел, как закрыть его, не убивая ответственную сессию. AFAICT, клиент Windows “думает”, что он закрыт; но не стал рассказывать файловому серверу.

Ответ №7

Ответ №8

enter image description here

Компьютер Management-> Общий доступ Folders-> Открытые файлы

  • Как узнать марку видеокарты на windows 10
  • Как узнать кто администратор компьютера на windows 10
  • Как узнать когда истекает срок лицензии windows 10
  • Как узнать модель видеокарты на компьютере windows 10
  • Как узнать код установленного windows