MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Как определить файлы используемые сторонним процессом?"
Answer 759191
Тут есть несколько вариантов.
Получить список процессов, открывших файл, с помощью Restart Manager (пример), для каждого файла.
Распарсить вывод команды
openfiles /query
, которая выводит список всех открытых в данный момент файлов, и отфильтровать нужное (предварительно нужно включить вывод локальных файлов через командуopenfiles /local on
, и перезагрузить систему).Как вы сказали, пытаться открывать файлы с параметром
FileShare.None
, и ловить исключенияСмотрите сами, по ситуации, что больше подходит. Все способы довольно тяжелые, если файлов много.
Примечание. Утилита openfiles (предположительно) использует для получения списка локально открытых файлов недокументированные возможности функции
NtQuerySystemInformation
и анализ внутренней структуры дескрипторов, поэтому реализовать самостоятельно эту же функциональность будет слишком трудно. (Пример решения на С++ с использованием своего драйвера.)
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.