Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

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

с помощью функции 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 в 20:35.
rpy3uH вне форума Ответить с цитированием
Старый 14.01.2020, 10:54   #4
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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