Как посмотреть где открыт файл
Перейти к содержимому

Как посмотреть где открыт файл

  • автор:

Как найти и закрыть открытые файлы в сетевой папке на сервере Windows?

date

06.12.2023

user

itpro

directory

PowerShell, Windows 10, Windows 11, Windows Server 2019

comments

комментариев 60

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

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

Вывод списка открытых файлов в сетевой папке Windows

Список открытых по сети файлов в Windows можно получить с помощью графической консоли Computer Management (Управление компьютером).

Открыты файлы на файловом сервере Windows

  1. Откройте консоль compmgmt.msc и перейдите в раздел System Tools ->Shared Folders ->Open files (Служебные программы -> Общие папки -> Открыты файлы);
  2. В правой части окна отображается список открытых файлов. Здесь указаны локальный путь к файлу, имя учетной записи пользователя, количество блокировок и режим, в котором открыт файл (Read или Write+Read).

Также вы можете вывести список открытых на сервере файлов из командной строки:

Openfiles /Query /fo csv

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

Openfiles /Query

Cо списком открытых файлов на сервере удобнее работать с помощью PowerShell командлета Get-SmbOpenFile:

В выводе команда содержится имя пользователя, имя (IP адрес) удаленного компьютера, с которого открыт файл), имя файла и ID файловой сессии.

poweshell вывод список пользователей, которые открыли файлы в сетевой папке windows

Кто открыл файл в общей сетевой папке на сервере Windows?

Чтобы удаленно определить пользователя, который открыл (заблокировал) файл cons.adm в сетевой папке на сервере mskfs01, выполните команду:

Openfiles /Query /s mskfs01 /fo csv | find /i «cons.adm»

Ключ /i используется, чтобы выполнялся поиск без учета регистра в имени файла.

Можно указать только часть имени файла. Например, чтобы узнать, кто открыл xlsx файл, в имени которого есть строка farm, воспользуйтесь таким конвейером:

Openfiles /Query /s mskfs01 /fo csv | find /i «farm»| find /i «xlsx»

С помощью PowerShell также можно получить информацию о пользователе, который открыл файл. Например:

Вывести все открытые по сети exe файлы:

Найти открытые файлы по части имени:

Вывести все файлы, открытые определенным пользователем:

Get-SMBOpenFile –ClientUserName «corp\aaivanov» |select ClientComputerName,Path

Найти файлы, которые открыли с указанного компьютера:

Get-SMBOpenFile –ClientComputerName 192.168.12.170| select ClientUserName,Path

Принудительно закрыть открытый файл на сервере Windows

Можно закрыть открытый файл через консоль Computer Management. Найдите файл в списке секции Open Files, выберите в контекстном меню пункт “Close Open File”.

Закрыть открытые файлы в сетевой папке

Если на сервере по сети открыты сотни файлов, то найти нужный файл в графической консоли довольно сложно. Лучше использовать инструменты командной строки.

Закрыть файл можно, указав ID его SMB сессии. Получить ID сессии файла:

Openfiles /Query /fo csv | find /i «report2023.xlsx»

команда openfiles найти кем открыт файл

Теперь можно принудительно отключить пользователя по полученному идентификатору SMB сессии:

Openfiles /Disconnect /ID 3489847304

openfiles disconnect - закрыть открытый файл на сервере

SUCCESS: The connection to the open file "D:\path\REPORT2023.XLSX" has been terminated.

Вы разблокировали открытый файл и теперь его могут открыть другие пользователи.

Можно принудительно сбросить все сессии и освободить все файлы, открытые определённым пользователем:
openfiles /disconnect /s mskfs01 /u corp\aivanova /id *

Можно закрыть открытый файл по ID сессии с помощью PowerShell командлета Close-SmbOpenFile.

Close-SmbOpenFile — SessionId 3489847304

Найти и закрыть открытый файл одной командой:

Get-SmbOpenFile | where | Close-SmbOpenFile

powershell закрыть открытый файл на сервере

Для подтверждения сброса сессии и освобождения отрытого файла нажмите Y -> Enter .

Чтобы закрыть файл без предупреждения, добавьте параметр -Force в последнюю команду.

С помощью Out-GridView можно сделать простую графическую форму для поиска и закрытия файлов. Следующий скрипт выведет список открытых файлов. Администратору нужно с помощью фильтров в таблице Out-GridView найти и выделить нужные файлы, а затем нажать ОК. В результате выбранные файлы будут принудительно закрыты.

Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID| Out-GridView -PassThru –title “Select Open Files”|Close-SmbOpenFile -Confirm:$false -Verbose

Get-SmbOpenFile вместе с out-gridview - powershell скрипт с графическим интерефейсом по выбору и принудительному закрыттию заблокированных (открытых) файлов в windows

Принудительное закрытие открытого файла на файловом сервере, вызывает потерю несохраненных пользователем данных. Поэтому команды openfiles /disconnect и Close-SMBOpenFile нужно использовать с осторожностью.

Как удаленно закрыть открытые по сети файлы с помощью PowerShell?

Командлеты Get-SMBOpenFile и Close-SmbOpenFile можно использовать чтобы удаленно найти и закрыть открытые файлы. Сначала нужно подключиться к удаленному SMB серверу Windows через CIM сессию:

$sessn = New-CIMSession –Computername mskfs01

Также вы можете подключаться к удаленному серверам для запуска команд через командлеты PSRemoting: Enter-PSSession или Invoke-Command .

Следующая команда найдет сессию для открытого файла *pubs.docx и завершит ее.

Get-SMBOpenFile -CIMSession $sessn | where | Close-SMBOpenFile -CIMSession $sessn

Подтвердите закрытие файла, нажав Y . В результате вы разблокировали открытый файл. Теперь его могут открыть другие пользователи.

Get-SMBOpenFile - удаленное управление открытых файлов

С помощью PowerShell вы можете закрыть и осведомить на файловом сервере все файлы, открытые определенным пользователем (пользователь ушел домой и не освободил файлы). Например, чтобы сбросить все файловые сессии для пользователя ipivanov, выполните:

Get-SMBOpenFile -CIMSession $sessn | where |Close-SMBOpenFile -CIMSession $sessn

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Файл занят другим процессом, заблокирован другим процессом или открыт в другой программе — простое решение

Как разблокировать файл в PowerToys Locksmith

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

File Locksmith — новая функция Microsoft PowerToys для разблокировки файлов

Заблокированный другим процессом файл или папка — типичная ситуация, при этом Windows не всегда сообщает пользователю, о каком именно процессе идёт речь.

Процесс не может получить доступ к файлу, сообщения об ошибке

На сайте уже несколько раз обновлялся обзор полезной и бесплатной утилиты Microsoft PowerToys, содержащей набор инструментов для работы в системах Windows 10 и Windows 11. В начале ноября в ней появилась ещё одна возможность — File Locksmith, которая и поможет в рассматриваемой ситуации.

File Locksmith позволяет легко определить, какие процессы используют файл или папку (а точнее — её содержимое) и быстро закрыть эти процессы. Далее подробно о том, как именно работает функция:

  1. Установите Microsoft PowerToys, если ещё не установили. Проще всего это сделать из магазина приложений Microsoft Store используя поиск в магазине или ссылку https://aka.ms/getPowertoys, также есть другие способы загрузки: https://learn.microsoft.com/ru-ru/windows/powertoys/install
  2. После первого запуска приложения может потребоваться перезапуск PowerToys от имени администратора в главном окне приложения (в моем тесте функция File Locksmith не появилась в меню до выполнения перезапуска на одном из устройств). Перезапуск Microsoft Powertoys от имени администратора
  3. В параметрах Microsoft PowerToys убедитесь, что функция File Locksmith включена. Функция File Locksmith в Microsoft Powertoys
  4. Нажмите правой кнопкой мыши по файлу, который занят другим процессом и выберите пункт меню «Какие процессы используют этот файл?». В Windows 11 потребуется предварительно открыть классическое контекстное меню, нажав «Показать дополнительные параметры». Посмотреть какие процессы используют этот файл
  5. Откроется окно со списком процессов, использующих этот файл. Если процесс не отображается, выполните перезапуск окна с правами администратора, нажав по значку справа вверху. Процессы использующие файл
  6. Раскрыв свойства процесса, вы можете узнать его идентификатор (например, для завершения вручную), а также от имени какого пользователя он запущен. Информация о процессе в File Locksmith
  7. Действие по проверке использующих элемент процессов можно применять и к папке, в таком случае будет отображаться список всех процессов, использующих её содержимое, а раскрыв сведения можно получить информацию о том, какие именно файлы использует этот процесс. Какие процессы используют файлы в папке
  8. И, самое главное, прямо в окне File Locksmith можно завершить процесс. Однако будьте осторожны при завершении системных процессов Windows.

Надеюсь, новый инструмент будет полезен. Конечно, есть и другие возможности, например, многие используют Unlocker, но вариант с File Locksmith куда более безопасен для пользователя, на мой взгляд.

А вдруг и это будет интересно:

  • Лучшие бесплатные программы для Windows
  • Браузер Arc доступен для Windows 11
  • Что за пользователь ASPNET в Windows
  • Как разрешить обычному пользователю запускать программу от имени Администратора без ввода пароля
  • Как выйти из полноэкранного режима в Windows
  • Как включить компактный вид панели быстрых настроек Windows 11
  • Windows 11
  • Windows 10
  • Android
  • Загрузочная флешка
  • Лечение вирусов
  • Восстановление данных
  • Установка с флешки
  • Настройка роутера
  • Всё про Windows
  • В контакте
  • Одноклассники

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

Как я могу узнать, какой процесс блокирует файл или папку в Windows? Например, при попытке удалить папку Windows сообщает следующее:

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

Такая же ошибка может возникнуть при переименовании или удаления как папки, так и файла. Но как узнать, какая программа или приложение в настоящее время использует его и не позволяет удалить файл или папку?

Имеется сразу несколько способов и программ чтобы найти процессы и программы, которые открыли файл.

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

Для поиска программы или процесса, открывшей файл, вы можете использовать Монитор ресурсов (Resource Monitor), который встроен в Windows 7, 8 и 10.

Откройте Монитор ресурсов, это можно сделать несколькими способами:

  • В поле для поиска введите «Монитор ресурсов» или resmon.exe:

  • Или в Диспетчере задач перейдите на вкладку «Производительность» и найдите кнопку «Открыть монитор ресурсов»:

В Мониторе ресурсов перейдите на вкладку ЦП (CPU). Используйте поле поиска в разделе «Связанные дескрипторы»

В результатах поиска в столбце «Образ» вы увидите, какая программа запустила процесс, блокирующий файл.

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

2. Process Explorer

Process Explorer — это официальная программа от Microsoft/SysInternals, которую можно скачать по ссылке: https://download.sysinternals.com/files/ProcessExplorer.zip

Перейдите в FindHandle or DLL.

В текстовом поле «Handle or DLL substring:» введите путь до файла или папки. Будут показаны все процессы, которые имеют открытый обработчик на этот файл.

3. OpenedFilesView

OpenedFilesView это бесплатная программа не требующая установки, она покажет все открытые файлы, имеется возможность искать по имени или пути файла:

4. LockHunter

LockHunter — это надёжная программа для разблокировки файлов.

Это бесплатный инструмент для удаления файлов, заблокированных неизвестным процессом. LockHunter полезен для борьбы с вредоносными программами и другими программами, которые блокируют файлы без причины. В отличие от других подобных инструментов, он удаляет файлы в корзину, поэтому вы можете восстановить их, если удалили по ошибке.

  • Показывает процессы, блокирующие файл или папку
  • Предоставляет вам подробную информацию о процессе
  • Позволяет разблокировать, удалить, скопировать или переименовать заблокированный файл
  • Может удалить файл при следующей перезагрузке ОС
  • Позволяет убить процесс блокировки
  • Позволяет удалить процессы блокировки с жёсткого диска
  • Может выгружать DLL из процессов
  • Интегрируется в меню Проводника
  • Он удаляет файлы в корзину, поэтому вы можете восстановить их, если удалили по ошибке
  • Поддерживает как 32, так и 64 битную Windows

Как определить, какой процесс в Windows 10 не дает переименовать, переместить либо удалить файл или папку

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

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

Ошибка

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

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

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

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

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *