Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 01.04.2009, 10:30   #1
SibBear
Пользователь
 
Регистрация: 11.05.2008
Сообщений: 62
Вопрос Определить каким процессом занят файл

Есть файл на диске, задача определить какая программа, или процесс в данный момент этот файл используют.
Как это можно реализовать?
SibBear вне форума Ответить с цитированием
Старый 17.05.2011, 07:49   #2
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

upd, тоже интересно стало
гугл не помог
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 17.05.2011, 16:44   #3
rpy3uH
добрый няша
СуперМодератор
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,808
По умолчанию

с помощью функции ZwQuerySystemInformation получить список хендлов в системе. Должен получиться список хендлов и процессов к которым относится каждый хендл. Каждый хендл будет представлен следующей структурой
Код:
typedef struct _SYSTEM_HANDLE
{
	ULONG       uIdProcess;
	UCHAR       ObjectType; 
	UCHAR       Flags;
	USHORT      Handle;
	POBJECT     pObject;
	ACCESS_MASK GrantedAccess;
} SYSTEM_HANDLE, *PSYSTEM_HANDLE;
Потом с помощью функции NtQueryInformationFile получаем имена файлов к которым относятся хендлы. Остаётся только найти нужный файл и узнать ID процесса владельца

Написано вот здесь в самом начале

Последний раз редактировалось rpy3uH; 17.05.2011 в 19:35.
rpy3uH вне форума Ответить с цитированием
Старый 14.01.2020, 10:54   #4
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 229
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
Написано вот здесь в самом начале
искал только что, оно переехало сюда
пыжок
maloun вне форума Ответить с цитированием
Старый 24.01.2020, 01:50   #5
m0rg0t
Пользователь
 
Регистрация: 19.07.2011
Сообщений: 14
По умолчанию

Для висты+ можно юзать апи Restart manager.
m0rg0t вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как определить какие файлы есть в папке и вывести их имена в текстовый файл Tdoctor Паскаль, Turbo Pascal, PascalABC.NET 3 04.11.2008 05:18
Виды манипуляций с процессом, из DLL Ivan_32 Win Api 3 09.10.2008 07:38
как определить в какой кодировке текстовый файл? PuzzleC Общие вопросы C/C++ 7 11.12.2007 13:52
Каким образом скопировать файл? Kashp Общие вопросы Delphi 14 07.08.2007 10:44
Работа с файлом, занятым другим процессом Viteef Общие вопросы Delphi 3 10.05.2007 19:45


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840