Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Как определить, каким приложением занят файл

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

aleksey1965

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
О том, как определить, каким процессом занят файл, написано немало, поэтому буду краток, остановлюсь лишь на некоторых моментах.
 
Один из них такой: А вот как определить процесс, если этим процессом является драйвер?

В таких случаях Unlocer пишет, что процесс не блокирован, но удалить, переместить, переименовать файл можно только при перезагрузке.
 
NirSoft OpenedFilesView кроме того, что это процесс системный, тоже не пишет ничего.
 
Ни Process Explorer, ни Process Monitor, ни другие утилиты не пишут каким процессом занят файл, если этим процессом является какой-нибудь драйвер.
 
Вот пример:
 
В папке C:\Windows\Temp у меня появился фай TmpFile1.
 
Разер файла 8 409 088 Байт (ровно 16424 кластера).
 
Внутри файл начинается с "... RajuRam ... xV4 ... RamDisk ... FAT32 ...", потом идут одни нули "... 00 ..." и заканчивается так "... MS-HORDRIVE ...".
 
Удалить, переместить, переименовать его ничем не возможно.
 
Определить, какой процесс его создает, тоже не получается.
 
"Методом тыка" и путем "гугления" проблемы, путем проб и ошибок, было найдено, что этим процессом является драйвер.
 
Это драйвер aksdf.sys:
- Description: Aladdin Data Mini-Filter Driver
- ImagePath: C:\Windows\system32\drivers\aksdf.sys
- Start: 2 - это автозагрузка (0 - загрузочный, 1 - системный, 2 - автозагрузка, 3 - вручную, 4 - отключен)
 
Короче, с какой-то программой, даже не знаю какой, установился алладиновский драйвер защиты Driver Sentinel HASP.
 
Если проделать операции Диспетчер устройств >>> Вид >>> Показать скрытые устройства >>> Драйверы несамонастраиваемых устройств >>> aksdf >>> Свойства >>> Драйвер >>> Остановить, то файл C:\Windows\Temp\TmpFile1 сразу же исчезает, но при включении драйвера он сразу же появляется опять.
 
Так же, когда у меня стоял Kaspersky Cristal, какой-то один из его драйверов так же создавал в папке C:\Windows\Temp какие-то файлы, которые так же удалить, переместить, переименовать было невозможно, которые так же сами исчезали после отключения драйвера и появлялись после включения.
 
Вот и основной вопрос: "Как программно, не "методом тыка", не "гуглением", а средствами Windows, определить, каким процессом занят файл, если этим процессом является драйвер?"
 

Всего записей: 211 | Зарегистр. 08-01-2013 | Отправлено: 15:40 29-11-2016 | Исправлено: aleksey1965, 15:41 29-11-2016
aleksey1965

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вроде нашел путь, как это сделать, с помощью Вадима Стеркина и его советов:
 
Вадим Стеркин Как определить, каким приложением занят файл
 
Вадим Стеркин Process Monitor: как отследить приложение, записывающее непонятные файлы на диск
 
Вадим Стеркин Process Monitor: отслеживание файловой активности
 
Василий Гусев Process Monitor – скринкаст
 
Василий Гусев process monitor - мониторинг для продвинутых
 
Драйвер – это системный процесс, и сторонних утилит, способных копаться в системных процессах, практически нет. Помочь моли бы Microsoft (а оно ей надо) или Марк Руссинович, и его утилита Process Monitor.
 
Если коротко, то методика такая:
- Ставим фильтр на путь: C:\Windows\Temp\TmpFile1
- Ставим галочку Enable Boot Logging (Включить лог загрузки)
- Указываем путь сохранения лога
- Перезагружаемся
- Исследуем загрузочный лог
 
В стеке оказалось 4 программы: Ntoskrnl.exe, aksdf.sys, fltMgr.sys, ntfs.sys.
 
Получается, что ядро системы Ntoskrnl.exe  грузит драйвер защиты Sentinel HASP aksdf.sys, он дает команду на создание файла C:\Windows\Temp\TmpFile  драйверу фильтра файловой системы fltMgr.sys, а то уже передает эту команду конкретно исполнителю, драйверу файловой системы NTFS ntfs.sys.
 
Выражаю спасибо Вадиму Стеркину  за советы с решением этого вопроса.

Всего записей: 211 | Зарегистр. 08-01-2013 | Отправлено: 21:47 04-12-2016
Cranby

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
возможно это от драйвера хасп-ключей от алладина или что то в этом роде. у меня появился подобный файл после установки Алладина

Всего записей: 1 | Зарегистр. 09-09-2020 | Отправлено: 17:54 09-09-2020
VGryboedov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как, используя функции Win API или классы .NET проверить, занят ли файл другим приложением? Пробовал сделать через исключение IOException, но работает, только если в моей же программе открыть тот файл для чтения, не закрыть, и опять открыть. А если файл открыт, допустим, блокнотом, то он не определяет.

Всего записей: 11 | Зарегистр. 08-09-2020 | Отправлено: 10:11 15-09-2020
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Как определить, каким приложением занят файл


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru