Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 166

/ вопрос открыт /

Здравствуйте. В вопросе № 156 я спрашивал, как ограничить доступ к файлу Test.dat другими приложениями, пока запущено собственное. Но, видимо, вопрос был сформулирован некорректно. Дело в том, что интерес представляет ограничение доступа к файлу в принципе. Т.е., программа работает с каким-то файлом (*.ini; *.doc; *.txt и т.д.). В этот файл программа осуществляет чтение/запись. При чем, файл открывается только на время операции чтение/запись. Все остальное время он закрыт (это принципиально).
Подскажите пожалуйста, как сделать так, чтобы пока приложение запущено этот файл нельзя было открыть/скопировать проводником или Total commander'ом.

Романов М.Ю. Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Романов М.Ю. (статус: Посетитель)
Вопрос отправлен: 19 ноября 2006, 18:56
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Alex Van Glukhman

Здравствуйте, Романов М.Ю.!
Как и было написано ранее.
Тип TFileStream.
Берёшь файл с которым работаешь - вешаешь его в поток с параметром fmShareDenyNone, и делай с ним в проге всё что хочешь. Я же приводил код.

Ответ отправил: Alex Van Glukhman (статус: 7-ой класс)
Время отправки: 19 ноября 2006, 20:37

Ответ #2. Отвечает эксперт: Матвеев Игорь Владимирович

Здравствуйте, Романов М.Ю.!
Есть два известных мне способа блокировать файл:
1. CreateFile с соответствующим параметром dwShareMode, суда же относятся TFileStream и file AssignFile т.к. это одно и тоже.
2. Написать драйвер, который будет перехватывать CreateFile, проврять имя файла - если указан Ваш файл - возвращать ошибку, если нет - передавать управление в оригинальную системную функцию.

Думаю в Вашем случае применим первый вариант.

Ответ отправил: Матвеев Игорь Владимирович (статус: Студент)
Время отправки: 21 ноября 2006, 04:43


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 20 ноября 2006, 15:35; участников в обсуждении: 1.
Косолапов Дмитрий Юрьевич

Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 20 ноября 2006, 15:35 [#1]:

Скорее всего, условия "все остальное время он закрыт" и "пока приложение запущено этот файл нельзя было открыть/скопировать" несовместимы. Поэтому надо отказаться от одного из этих условий.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:53
Выполнено за 0.02 сек.