|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.10.2007, 19:22 | #1 |
Пользователь
Регистрация: 07.10.2007
Сообщений: 15
|
Разблокирование файла
Всем привет!Народ помогите пожалуйста!Есть такая программа называется unlocker, она нужна для разблокировки файлов.Например какойто процесс блокирует доступ к файлу, а unlocker разрешает доступ к этому файлу.Как можно реализовать такое в делфи?и ли вообще возможно такое?
|
28.10.2007, 20:36 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
В WinAPI есть нужные функции UnlockFile и LockFile.
См. хэлп, это совсем не больно. |
29.10.2007, 04:09 | #3 |
Пользователь
Регистрация: 07.10.2007
Сообщений: 15
|
|
29.10.2007, 08:08 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Кстати если прога открыла файл эксклюзивно то эти функи не помогут.
I'm learning to live...
|
|
29.10.2007, 10:40 | #5 |
Пользователь
Регистрация: 26.10.2007
Сообщений: 79
|
Не уверен, что получится, но можно попробовать так:
1. Сначала ищем процесс, открывший файл, для этого: 1.1 С помощью NtQuerySystemInformation с флагом SystemHandleInformation получаем информацию, которая содержит список дескрипторов и процессов, которые ими владеют. 1.2. В цикле по всем элементам полученного массива вызываем сначала NtDuplicateObject, чтобы скопировать дескриптор в свой процесс, а потом - NtQueryObject, чтобы узнать информацию об объекте - его тип (нам нужен 'File'), имя. Когда найдем - будем знать, что за процесс открыл и заблокировал файл. Частично реализацию этого (правда для сокетов), можно взять здесь: http://slow.alfamoon.com/content/upl...ist_socket.dpr 2. Закрываем дескриптор файла в удаленном процессе. Для этого можно попробовать NtDuplicateObject с флагом DUPLICATE_CLOSE_SOURCE, но может не получится. Скорее всего на 100% сработает метод внедрения кода в чужой процесс, но у него есть ряд нехороших качеств. Ну и видимо через драйвер режима ядра это можно как-то сделать наиболее правильно, скорее всего ваша утилита именно через драйвер и работает. Последний раз редактировалось Slovinsky; 29.10.2007 в 11:00. |
29.10.2007, 13:19 | #6 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Анлокер ещё хук вешает на SHFileOperation, чтоб всплывать после диалога "Windows не может... так как файл занят"
Кстати много полезного по теме как всегда тут http://www.wasm.ru/print.php?article=lockfileswork
пыщь
Последний раз редактировалось JTG; 29.10.2007 в 13:24. |
29.10.2007, 14:50 | #7 | |
Пользователь
Регистрация: 07.10.2007
Сообщений: 15
|
Цитата:
|
|
30.10.2007, 09:47 | #8 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
А какая разница на чем ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
30.10.2007, 10:21 | #9 | |
Пользователь
Регистрация: 26.10.2007
Сообщений: 79
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Открытие файла | Messir_Leonard | Win Api | 2 | 09.04.2008 19:33 |
Код ехе файла | Micha | Общие вопросы Delphi | 4 | 09.10.2007 18:06 |
Два XL файла, данные 1-го файла являются частью другого в формуле 2-го | Кот | Microsoft Office Excel | 2 | 14.08.2007 16:56 |
Прикрепление файла? | John_chek | БД в Delphi | 0 | 22.05.2007 15:30 |