|
Вопрос # 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, проврять имя файла - если указан Ваш файл - возвращать ошибку, если нет - передавать управление в оригинальную системную функцию.
Думаю в Вашем случае применим первый вариант.
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 20 ноября 2006, 15:35; участников в обсуждении: 1.
|
Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 20 ноября 2006, 15:35 [#1]:
Скорее всего, условия "все остальное время он закрыт" и "пока приложение запущено этот файл нельзя было открыть/скопировать" несовместимы. Поэтому надо отказаться от одного из этих условий.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|