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

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

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

466 голосов | спросил cletus 1 Mayam09 2009, 04:47:16

16 ответов


412

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

Чтобы найти конкретный файл, используйте опцию меню 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
ответил Eddie 1 Mayam09 2009, 05:03:15
131

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

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

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

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

Снимок экрана монитора ресурсов

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

ответил Svish 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 10 Sep 2013 15:48:00 +0400 2013, 15:48:00
77

Попробуйте выполнить команду openfiles .

ответил John Fouhy 1 Mayam09 2009, 05:18:36
75

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

см. сообщение Раймонда Чена на эту тему

  

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

     

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

     

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

     

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

ответил Mark Sowul 30 Maypm09 2009, 21:04:27
27

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

ответил Greg Hewgill 1 Mayam09 2009, 04:52:31
7

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

ответил Generic Error 6 Mayam09 2009, 04:43:22
7

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

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

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

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

ответил Maximus Minimus 12 +04002009-10-12T18:27:09+04:00312009bEurope/MoscowMon, 12 Oct 2009 18:27:09 +0400 2009, 18:27:09
6

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

ответил K. Brian Kelley 1 Mayam09 2009, 05:01:37
6

Apropos Explorer, открывающий файл: «Когда это происходит в файле, вам нужно удалить, у вас есть выбор, чтобы заставить дескриптор закрыть или перезагрузить».

Вы можете просто завершить Explorer.

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

В противном случае, удалите процесс Desktop Explorer и сделайте то, что вы хотите, пока оно исчезло. Сначала запустите копию cmd.exe (вам нужен пользовательский интерфейс, чтобы выполнить запланированную очистку). Убедитесь, что запущенные поисковые системы не работают. Затем уничтожьте последний проводник, например, диспетчер задач. Выполняйте то, что вы хотите в командной строке. Наконец, запустите проводник из командной строки, и он станет рабочим столом.

Я бы предположил, что может быть какая-то остаточная неприятность, если некоторые программы systray не могут работать с перезапуском оболочки.

ответил 3 J0000006Europe/Moscow 2009, 18:01:03
6

Lockhunter ( http://lockhunter.com/) работает в 32 и 64-битных системах.

ответил Scoregraphic 12 +04002009-10-12T17:06:32+04:00312009bEurope/MoscowMon, 12 Oct 2009 17:06:32 +0400 2009, 17:06:32
4

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

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

* Select "Manage Computer" (Open "Computer Management")
* click "Shared Folders"
* choose "Open Files"

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

ответил Dirk Paessler 12 +04002009-10-12T16:53:52+04:00312009bEurope/MoscowMon, 12 Oct 2009 16:53:52 +0400 2009, 16:53:52
3

Существует также открытый файл View .

ответил Christopher Galpin 1 Mayam09 2009, 06:12:50
2

С помощью Process Hacker вы можете определить, какие процессы хранят ваши файлы:

 Найти ручки или библиотеки DLL

ответил Ivan Kochurkin 13 +03002016-10-13T02:07:38+03:00312016bEurope/MoscowThu, 13 Oct 2016 02:07:38 +0300 2016, 02:07:38
2

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

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

Если это произойдет, ваш вариант (насколько мне известно) должен перезапустить - или забыть о том, чтобы что-то делать с этим файлом.

ответил Blair 16 Mayam17 2017, 03:51:26
0

Я был включен в Exteneded Task Manager некоторое время назад блоге Джереми Заудни , и это отлично подходит для отслеживания дальнейшей информации о процессах. +1 для Process Explorer, как и выше, особенно для уничтожения процессов, которые стандартный диспетчер задач не завершит.

ответил nedm 17 Mayam09 2009, 00:16:33
0

Есть инструмент FILEMON и показывает открытые файлы и дескрипторы. Его трудно не отставать от своего дисплея, если вы смотрите его вживую, он делает это быстро. Но вы можете остановить его отображение в реальном времени, и вы можете наблюдать за всеми действиями открытия /записи файлов. Теперь принадлежит Microsoft, но первоначально Sysinternals

ответил user44304 27 Maypm10 2010, 20:15:11

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132