Вопрос: Как вы находите, какой процесс хранит файл в Windows?


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

Любые предложения о том, как найти виновника?


467
2018-05-01 00:47


Источник


Вы могли бы подумать, что все это время ребята из Windows дадут нам возможность сделать это легко из Explorer. Интересно, почему этого не произошло? - Cawflands
Я считаю, что Explorer очень часто является проблемным процессом, который держится за файл без видимой причины. - Eddie
Я знаю, это не очень помогает, но я думаю, что я вспомнил, что это была запланированная функция следующего выпуска Windows после Vista и сервера 2008 года. или, может быть, это вещь WinFS. не знаю, где я читаю, что ... - Kip


Ответы:


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

Чтобы найти конкретный файл, воспользуйтесь опцией меню Find->Find Handle or DLL...  Введите часть пути к файлу. Ниже приведен список процессов.

Если вы предпочитаете командную строку, пакет Sysinternals включает в себя инструмент командной строки Ручка, в котором перечислены открытые дескрипторы. Несколько примеров того, как его использовать:

  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i e:\ - найти все файлы, открытые с диска E:
  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i file-or-path-in-question

412
2018-05-01 01:03



Вы можете закрыть ручку, но имейте в виду, вы вытаскиваете ковер из-под приложения, результаты в лучшем случае будут непредсказуемыми. - WaldenL
@ Вальден: Абсолютно. YMMV. С WinXP я неоднократно использовал Explorer, чтобы открыть дескриптор без видимых причин и отказаться от его закрытия. Когда это происходит в файле, вам необходимо удалить, у вас есть выбор: принудительно закрыть ручку или перезагрузить. До сих пор, совершив это десятки раз, я не пострадал. Как и любой другой инструмент, используйте его с осторожностью и суждением. - Eddie
Закрытие дескрипторов может привести к тому, что приложение повторно использует дескриптор в другом файле, что приведет к повреждению - см. Ниже ответ Джеффа: serverfault.com/a/15695/79266 ... гораздо безопаснее убить приложение, открывающее файл, если вы не хотите перезагружаться. - RichVel
Для проводника, кстати, держите ctrl-shift и щелкните правой кнопкой мыши пустую область в меню «Пуск», и вы получите «Exit Explorer» - ps, а не совсем ответ Джеффа. - Mark Sowul
Это не помогает для неиспользуемого файла i.g. текстовый файл. Мне нужно знать, кто пишет в файл журнала. Есть идеи? - Xaqron


Для Windows 7, Windows 8 и Windows 10 вы можете использовать встроенный Монитор ресурсов для этого.

  1. открыто Монитор ресурсов, которые можно найти
    • При поиске resmon.exe в меню «Пуск» или
    • Как кнопка на Представление в вашем Диспетчер задач
  2. Установите флажок рядом с Образ заголовок на Процессы section (Проверенные процессы покажут свои дескрипторы файлов ниже.)
  3. Используйте поле поиска в Связанные ручки раздел по ЦПУ табуляция
    • Указывается синей стрелкой на скриншоте снизу

В случае, если это не очевидно, когда вы нашли дескриптор, вы можете определить процесс, посмотрев столбец Image и / или PID.

Затем вы можете закрыть приложение, если это возможно, или просто щелкнуть правой кнопкой мыши по строке, и вы получите возможность убить процесс прямо там. Очень просто!

Resource Monitor screenshot

Скопировано из моего первоначального ответа: https://superuser.com/a/643312/62


133
2017-09-10 11:48



Стоит отметить, что найти эту программу в Windows 8 очень сложно - поиск «resmon.exe» должен найти ее. - Kylotan
@Kylotan, перестаньте тратить время на поиск. Просто беги resmon  прямо из cmd - Pacerier
@Pacerier: Ницца. Я не привык к тому, что находится в пути Windows. - Kylotan
Это подходит мне лучше, чем «Handle | FindStr 'и' Unlocker ', хотя они также эффективны - Marcus Vinicius Pompeu
Все еще действует в Windows 10 и может быть найден с помощью кнопки «Открыть монитор ресурсов» на вкладке «Диспетчер задач» -> «Производительность». - Norman Breau


Попробуйте openfiles команда.


77
2018-05-01 01:18



+1 для встроенной команды, хотя я лично использую ProcessExplorer для этого большую часть времени. - RBerteig
Действительно полезно. - marko
ОШИБКА: Целевая система должна иметь 32-разрядную ОС. - Bozojoe
не работает для 64 ОС! - Jarrod Roberson
Это похоже на работу с 64-битной версией Windows 2012R2, но вам нужно включить службу «открытого локального отслеживания», запустив openfiles /local on и перезапуск. Это делает эту функцию не очень полезной. - Guss


Просто будьте очень осторожны с закрывающимися ручками; это даже более опасно, чем вы думаете, из-за обработки дескриптора - если вы закроете дескриптор файла, а программа откроет что-то еще, этот оригинальный дескриптор файла, который вы закрыли, может быть повторно использован для этого «что-то еще». И теперь угадайте, что произойдет, если программа продолжится, думая, что она работает над файлом (чей дескриптор вы закрыли), когда на самом деле этот дескриптор файла теперь указывает на что-то еще.

видеть Сообщение Raymond Chen на эту тему

Предположим, что служба индекса поиска имеет файл, открытый для индексирования, но имеет   временно застрял, и вы хотите удалить файл, так что вы   (неразумно) заставьте ручку закрыть. Служба поискового индекса открывает   файл журнала, чтобы записать некоторую информацию, и дескриптор   удаленный файл перерабатывается как дескриптор файла журнала. Застрявший   наконец, завершается работа, и служба поискового индекса, наконец,   вокруг к закрытию, что ручка была открыта, но она невольно   закрытие дескриптора файла журнала.

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

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

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


75
2018-05-30 17:04



важное предупреждение, это должно приблизиться к вершине - перезагрузка, вероятно, лучше, чем файл с незащищенным повреждением. - RichVel
+1 Это, безусловно, заставит меня дважды подумать о том, чтобы ручки были закрыты! Мне кажется странным, что Windows немедленно повторно использует количество закрытого дескриптора, вместо того, чтобы продолжать увеличивать число и только обертывать, когда это необходимо. Это, по крайней мере, значительно снизит шансы на эту проблему. - EM0
@RichVel Прекращение процесса преступника, вероятно, лучше, чем полная перезагрузка. - Dmitry Grigoryev
@DmitryGrigoryev - хороший момент, и на самом деле я уже упоминал, что Вот - RichVel
Это очень важное предупреждение, но не отвечает на вопрос Как вы находите, какой процесс хранит файл в Windows? - Ploni


Я использовал Ручка с успехом найти такие процессы в прошлом.


27
2018-05-01 00:52



Я использую этот инструмент все время. Если я не могу извлечь USB-накопитель, я просто набираю «handle H:» (или любую букву диска). Лучше всего, вы можете использовать его для принудительного закрытия ручек. - Chris Thompson


Кто заблокировал меня хорошо работает и держит людей в восторге от имени!


7
2018-05-06 00:43



Не работает в 64-битных Windows 8 и 10. - rustyx


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

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

Теперь, если Исследователь, кажется, является виновником здесь, может быть, это так, что это просто на первый взгляд, и что истинный виновник - это то, что устанавливает расширение оболочки, которое открывает все файлы в папке для своих целей, но также слишком gung-ho при этом, или что он не очищается должным образом после себя. Symantec AV - это то, что я видел раньше, и я не удивлюсь, если виноваты и другие AV-программы. Плагины управления источником также могут быть неисправны.

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


7
2017-10-12 14:27



Я не буду обвинять стороннее приложение в том, что мой проводник Windows всегда блокирует файлы Thumbs.db в рабочем каталоге, но не всегда разблокирует его при переключении рабочего каталога. По крайней мере, они разблокированы, когда я закрываю окно, мне не нужно убивать ВСЕ исследователей ... - Alexander
@Darth, Вы продавец из Microsoft? - Pacerier


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


6
2018-05-01 01:01



Почему именно такие сложные ответы есть? - Rohit Gupta