Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.21.162.87] |
|
Сообщ.
#1
,
|
|
|
Как узнать процесс, который занял файл.
Одна программ пишет у себя : CreateFile(...); А я пока она не вызвала CloseHandle() не могу прочитать этот файл. Не могу найти как узнать ProcessID того процесса, который занял файл. |
Сообщ.
#2
,
|
|||
|
так зачем сразу закрывать ? Жестоко лучше прочитать открытый файл через MemoryStream.
|
Сообщ.
#3
,
|
|
|
Мне нужен именно процесс, который занял файл.
|
Сообщ.
#4
,
|
|
|
Ты шочешь сказать что ты указаваешь имя файла (C:\111.txt) и функция возвращает теиу ID процесса? Я правельно поняль че ты хочешь?
|
Сообщ.
#5
,
|
|
|
Присоединяюсь к этой просьбе. Вот, к примеру, Frigate 3 выводит при удалении файла кем он занят (если занят, конечно). Как это сделать?
|
Сообщ.
#6
,
|
|
|
А вопрос интересный. А если файл занят процессом на другом компьютере?
|
Сообщ.
#7
,
|
|||
|
Вот если файл занят процессом выполняющимся на другом компе, то существует способ определить имя компа. По крайней мере, плагин Shared Files к WinCmd умеет это делать. Ну получать PID такого процесса наверное бессмысленно. |
Сообщ.
#8
,
|
|
|
Все это, конечно, очень интересно, но проблема все еще не решена... Хотя есть наводка - программа Process Explorer (Sysinternals) - она умеет выдавать открытые разными процессами хэндлы (в частности). Дык вот, надо просто перебрать все процессы, найти все открытые ими хэндлы и глянуть, чего они там открыли. Если открыли файл, и имя совпадет с нужным - алилуйя. А вот хэндлы надо искать моим любимым WinAPI... Как - думать надо.
|