Определение того, какой процесс заблокировал файл

StackOverflow https://stackoverflow.com/questions/305843

  •  08-07-2019
  •  | 
  •  

Вопрос

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

  1. Прежде чем я что-либо сделаю в тесте Я проверяю в программе установки, существует ли файл , и если да, то пытаюсь удалить его.Это завершается ошибкой с той же ошибкой сообщение, что и выше
  2. При записи файла я закрываю программу записи, затем удаляю его, что, я считаю, должно избавить от любых ресурсов.

Итак, у меня есть пара вопросов

  1. У кого-нибудь были подобные проблемы и удалось ли их обойти
  2. Как можно узнать программно, какой процесс эгоистично заблокировал файл !!!

Ваше здоровье

Это было полезно?

Решение

Системные интерфейсы ФилеМон содержит некоторую информацию (прокрутите вниз) о том, как они выполняли это в более старых версиях Windows.

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

-Адам

Другие советы

Системные интерфейсы handle.exe это первый шаг.Или использовать Обозреватель процессов's Find Handle or DLL.Всегда безопаснее убейте процесс однако лучше закрыть ручку.

Программно это вопрос написания драйвера ядра, который считывает таблицу дескрипторов Windows.

Процессмон (для поиска) и Разблокировщик (по крайней мере, для разблокировки) тоже полезны.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top