Одна вещь, которая меня бесконечно раздражает в Windows, - это старая нарушение обмена ошибка. Часто вы не можете определить, что его держит. Обычно это просто редактор или проводник, просто указывающий на соответствующий каталог, но иногда мне приходилось прибегать к перезагрузке моей машины.
Есть предложения, как найти виновника?
Я добился успеха с 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"
Вы можете использовать Монитор ресурсов для этого, что приходит встроенный с Windows 7, 8 и 10.
Когда вы нашли дескриптор, вы можете идентифицировать процесс, посмотрев на столбец Image и / или PID.
Затем вы можете попробовать закрыть приложение, как обычно, или, если это невозможно, просто щелкнуть правой кнопкой мыши дескриптор и убить процесс прямо оттуда. Очень просто!
Скопировано из моего исходного ответа: https://superuser.com/a/643312/62
Попробуйте открытые файлы команда.
Только будьте очень осторожны с закрывающимися ручками; это даже более опасно, чем вы думаете, из-за повторного использования дескрипторов - если вы закроете дескриптор файла, и программа откроет что-то еще, этот исходный дескриптор файла, который вы закрыли, может быть повторно использован для этого «чего-то еще». А теперь угадайте, что произойдет, если программа продолжит работу, думая, что она работает с файлом (дескриптор которого вы закрыли), когда на самом деле этот дескриптор файла теперь указывает на что-то еще.
видеть Сообщение Раймонда Чена по этой теме
Предположим, у службы индексации поиска есть файл, открытый для индексирования, но он временно застрял, и вы хотите удалить файл, поэтому вы (неразумно) принудительно закрываете дескриптор. Служба индекса поиска открывает свой файл журнала, чтобы записать некоторую информацию, и дескриптор удаленного файла повторно используется в качестве дескриптора файла журнала. Застрявшая операция, наконец, завершается, и служба индекса поиска наконец приближается к закрытию того дескриптора, который она открыла, но в конечном итоге невольно закрывает дескриптор файла журнала.
Служба индекса поиска открывает другой файл, скажем, файл конфигурации для записи, чтобы он мог обновить какое-то постоянное состояние. Дескриптор файла журнала повторно используется как дескриптор файла конфигурации. Служба индекса поиска хочет зарегистрировать некоторую информацию, поэтому она записывает в свой файл журнала. К сожалению, дескриптор файла журнала был закрыт, и дескриптор повторно использовался для его файла конфигурации. Зарегистрированная информация попадает в файл конфигурации, повреждая его.
Между тем, другой дескриптор, который вы принудительно закрыли, был повторно использован в качестве дескриптора мьютекса, который используется для предотвращения повреждения данных. Когда исходный дескриптор файла закрывается, дескриптор мьютекса закрывается и защита от повреждения данных теряется. Чем дольше работает служба, тем больше искажаются ее индексы. В конце концов кто-то замечает, что индекс возвращает неверные результаты. И когда вы пытаетесь перезапустить службу, она терпит неудачу, потому что ее файлы конфигурации были повреждены.
Вы сообщаете о проблеме в компанию, которая создает службу индексации поиска, и они определяют, что индекс был поврежден, файл журнала загадочным образом прекратил регистрацию, а файл конфигурации был перезаписан мусором. Какому-то бедному технику поручается безнадежная задача выяснить, почему служба портит свои индексы и файлы конфигурации, не подозревая, что источником повреждения является принудительное закрытие дескриптора.
Я использовал Ручка удалось найти такие процессы в прошлом.
Локхантер (http://lockhunter.com/) работает на 32- и 64-битных системах.
Чтобы уточнить, это, скорее всего, является результатом неправильного поведения сторонних приложений, не использующих CreateFile API вызывает правильно, чем это должно быть что-либо в самой Windows. Возможно, это следствие замысла CreateFile, но готово, то сделано, и мы не можем вернуться.
Обычно при открытии файла в программе Windows у вас есть возможность указать флаг, разрешающий общий доступ. Если вы не укажете флаг, программа получит монопольный доступ к файлу.
Теперь, если в этом виноват Проводник, возможно, это только на поверхности, а истинный виновник - это то, что устанавливает расширение оболочки, которое открывает все файлы в папке для своих собственных целей, но либо слишком увлечен этим, или это не убирает должным образом после себя. Symantec AV - это то, что я видел раньше, и я не удивлюсь, если виноваты и другие антивирусные программы. Плагины управления исходным кодом также могут быть виноваты.
Так что на самом деле это не ответ, а всего лишь несколько советов, чтобы не всегда обвинять Windows в том, что может быть плохо написанной сторонней программой (что также может произойти в любой другой ОС, которая имеет неявную блокировку файлов, но любая ОС на основе unix имеет общий доступ через дефолт).
Кто запер меня хорошо работает и заставляет людей восхищаться своим названием!
На удаленном сервере, когда вы проверяете общий сетевой ресурс, такая простая вещь, как консоль управления компьютером, может отобразить эту информацию и закрыть файл.
По поводу проводника, удерживающего открытый файл: «Когда это происходит с файлом, который нужно удалить, у вас есть выбор: принудительно закрыть дескриптор или перезагрузить».
Вы можете просто завершить Explorer.
Если это одноразовая вещь (Explorer обычно не держит этот файл открытым), то я бы предположил, что выход из системы и повторный вход в нее помогут.
В противном случае завершите процесс проводника рабочего стола и делайте что хотите, пока его нет. Сначала запустите копию cmd.exe (вам понадобится пользовательский интерфейс для выполнения запланированной очистки). Убедитесь, что на компьютере не запущены проводники. Затем убейте последний проводник, например, с помощью диспетчера задач. Делайте что хотите в командной строке. Наконец, запустите проводник из командной строки, и он станет рабочим столом.
Я предполагаю, что могут возникнуть некоторые остаточные неприятности, если некоторые программы системной панели не могут справиться с перезапуском оболочки.
Файлы могут быть заблокированы локальными процессами (разблокировщик является инструментом для использования) и доступом к файлам через общие ресурсы.
В Windows есть встроенная функция, которая показывает, какие файлы на локальном компьютере открыты / заблокированы удаленным компьютером (на котором файл открыт через общую папку):
* Select "Manage Computer" (Open "Computer Management")
* click "Shared Folders"
* choose "Open Files"
Там можно даже принудительно закрыть файл.
Есть NirSoft's Просмотр открытых файлов также.
С участием Хакер процессов вы можете легко определить, какие процессы содержат ваши файлы:
Вышеупомянутые ответы с одобренными голосами охватывают ситуации, когда программный процесс держит дескриптор файла открытым, что (к счастью) большую часть времени - однако в некоторых случаях (как это происходит в этой системе в настоящее время) сама система содержит дескриптор файла открыто.
Вы можете идентифицировать эту ситуацию, следуя инструкциям, чтобы найти процесс удержания дескриптора файла с помощью проводника процессов выше, и отметив, что имя процесса указано как 'system', или следуя инструкциям с помощью монитора ресурсов и отметив, что изображение не отображается открытие дескриптора интересующего вас файла (хотя, очевидно, что-то происходит, поскольку вы не можете редактировать / удалять файл и т. д.).
Если это произойдет, ваш вариант (насколько мне известно) - перезапустить или забыть о каких-либо действиях с этим файлом.
Я был включен в Расширенный диспетчер задач некоторое время назад в блоге Джереми Заводни, и он отлично подходит для отслеживания дополнительной информации о процессах. +1 для Process Explorer, как указано выше, особенно для уничтожения процессов, которые не завершаются стандартным диспетчером задач.
Есть инструмент FILEMON и показывает открытые файлы и дескрипторы. Трудно угнаться за его дисплеем, если вы смотрите его вживую, он делает так быстро. Но вы можете остановить его отображение в реальном времени, и вы можете наблюдать за всей активностью открытия / записи файлов. Сейчас принадлежит Microsoft, но изначально принадлежит Sysinternals