Узнайте, кто блокирует файл в общей сетевой папке

145

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

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

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

олорин
источник

Ответы:

178

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

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

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

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

Дирк Песслер
источник
10
Вы даже можете использовать Действие -> Подключиться к другому компьютеру к файлу на NAS, и он даже работает с нашим NAT на основе Linux! Почему я не попробовал это раньше?
olorin
20
В Windows 2008 R2 перейдите в Диспетчер серверов> Роли> Файловые службы> Управление общим доступом и хранилищем> щелкните правой кнопкой мыши SaSM> Управление открытыми файлами.
Джейсон Пирс
Просто откройте консоль MMC и добавьте оснастку общих папок. Вы можете подключаться к удаленным системам.
nizx
2
Для общего домена это не сработало. Формулировка, похоже, подразумевает файлы, расположенные в ваших сетевых папках.
kevinf
1
Для этого я использовал приложение Unlocker (файл был на NAS). Приложение находится здесь: filehippo.com/download_unlocker/tech, и оно сработало для меня, но я не могу поручиться за это приложение
Дэн
58

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

Через управление общим доступом и хранилищем

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

Через OpenFiles

CMD> Openfiles.exe / query / s ИМЯ СЕРВЕРА

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

Джейсон Пирс
источник
2
Отличный ответ. Я не знал об Openfiles; это работает намного лучше, чем использование psexec или подобных инструментов удаленного взаимодействия.
twasbrillig
@twasbrillig хорошо, но если это NAS, а не Windows! C: \> Openfiles.exe / query / s 10.0.0.1 <ENTER> ОШИБКА: Целевая система должна работать под управлением Windows XP или выше.
barlop
Стоит отметить, что узлы «Роли» и т.д. расширяются с задержкой.
SerG
Спасибо за это, openfiles.exe также работает в Windows Server 2012 R2. Я не смог найти других хороших руководств о том, как составить список открытых файлов с сервера 2012 года, но это помогло.
Oldskool
Хорошая команда CMD, спасибо, что поделились! Windows 10 Корпоративная поставляется с Openfiles.exe прямо из коробки.
Лео Гурдиан 03
25

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

psfile \\remote-share

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

psfile \\remote-share I:\\Human_Resources

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

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

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

Баодад
источник
там должны быть двойные \ s?
PsychoData 07
@PsychoData, я давно не писал это. Надеюсь, что я написал правильно. \\ перед частью удаленного общего доступа выглядит правильно, но \\ в I: \\ Human_Resources выглядит странно. Тем не менее, я думаю, что у меня была причина для этого, когда я писал. Попробуйте и дайте мне знать.
Baodad 08
14

Если это просто случай узнать / увидеть, кто находится в файле в любое конкретное время (и если вы используете окна), просто выберите файл «view» как «детали», то есть вместо эскизов, плиток или значков и т. Д. в режиме просмотра «детали» по умолчанию вы будете отображаться; - Имя файла - Размер - Тип и - Дата изменения

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

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

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

Джонс
источник
4
В моем случае не сработало. Я добавляю столбец и вижу себя создателем общего файла на удаленном ресурсе, но уже заблокирован товарищем по работе.
Дэвид Оливан Убьето
5
Это действительно хорошо работает только тогда, когда программа, в которой они находятся, создает файл блокировки (например, MS Access), который будет принадлежать тому, кто его использует, а не первоначальному создателю файла
PsychoData
1
Чтобы сохранить добавление столбца, вы можете увидеть ту же информацию, если просмотрите свойства файла и посмотрите на вкладку Details.
Malvineous 05
Это действительно хорошо работает для таких вещей, как файлы MS Word.
Tridus 02
5

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


источник
Это хороший ответ со здравым смыслом. К сожалению, этот NAS не предлагает этой функции.
olorin
5

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

Используйте меню «Найти дескриптор», а затем введите такой путь

\Device\LanmanRedirector\server\share\
олорин
источник
2

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

Хавьер
источник
Кажется вероятным: насколько я знаю, наш NAS использовал собственный дистрибутив linux.
olorin