Запись в файл во время его работы

Для неординарных вопросов. Если вы опытный программист, попавший в трудную ситуацию, — вам сюда.

Модератор: gaidar

Правила форума
Этот раздел не предназначен для того, чтобы вы адресовали свою проблему профессионалам.
Этот раздел предназначен для профессионалов, которые столкнулись с проблемой и не могут решить ее самостоятельно.
Если вы считаете себя профессионалом, а свою проблему сложной — вам сюда.
Если модератор посчитает, что вы ошиблись, то на первый раз он перенесет ваше сообщение в основной раздел без последствий для автора. Во второй раз тема будет закрыта, а автору будет выписано нарушение. В третий раз автор будет забанен.
Neon
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 11.12.2007 (Вт) 17:44

Запись в файл во время его работы

Сообщение Neon » 11.12.2007 (Вт) 18:16

Подскажите плиз примерчик .... В общих чертах программулина должна записать в конец ее файла зашифрованную инфу.. ну текст допустим.. Проблемка такая чтение удается.. а вот запись ОС блокирует, выдает ошибку 75 ... Не знаю даже что придумать .. Ось блокирует к файлу доступ так как он выполняется.. Как-то видел примерчик в нете где с помощью апи доступ моно было предоставить этой проге на запись в свою структуру... Если кто знает за ранее благодарен =)

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 11.12.2007 (Вт) 19:50

Ms-Rem на васме писал статью "Три метода работы с занятыми файлами". Здесь на вбстритс тоже вроде Твистер че-то подобное делал. Попробуй, может подойдет...
Подпись проходит рефакторинг

M.A.R.K
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 11.11.2007 (Вс) 11:50
Откуда: Иркутск

Сообщение M.A.R.K » 28.02.2008 (Чт) 6:14

Читай Ms-Rem, он рассматривает этот вопрос:
http://wasm.ru/article.php?article=lockfileswork
Коротко:
1) Тебе необходимо остановить процесс, который "держит" файл.
2) Сохрани старый указатель в файле.
3) Считай все байты файла с массив, используя CreateFile и ReadFile.
4) Запиши байты в новый файл, используя CreateFile и WriteFile.
5) Востанови старый указатель в файле.
6) Возобнови процесс.
Я изложил, все сжато, читай Ms-Rem...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 29.02.2008 (Пт) 8:05

К своему же ЕХЕшнику таким образом обратиться из юзермода вряд-ли получится.
Во время работы программы система держит открытым хэндл проекции файла-образа. В win2000 его значение было равно 4-м и прокатывал трюк с самоудалением ЕХЕшника через выполнение особого кода на стеке. Сейчас эта дырка прикрыта, поэтому можно забыть о хотя-бы мало-мальски документированном и гарантированном способе записать что-то в себя же...
А я все практикую лечение травами...


Вернуться в Раздел для Профессионалов

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

    TopList