void * hUpdate = BeginUpdateResource(Application->ExeName.c_str(),false);
char * text = new char[File->Text.Length()];
text = File->Text.c_str();
UpdateResource(hUpdate,"RT_RCDATA","LIBRARY",0, (LPVOID)text, File->Text.Length());
delete [] text;
EndUpdateResource(hUpdate, false);
Хранение данных в exe-шнике
Нужно некий текст хранить в программе(exe), с подальшим его изменением, добавление, удалением.
Тоесть при запуске программы брыть из ресурсов текст, далее работа непосредственно с текстом, а при закрытии отправлять его обратно в ресурсы изменнённым.
Делаю всё в принципе как обычно...сохранение текста в другой программе работает, а в самой себя нет...
Код:
Код рабочий... но ...проблема в том, что вместо сохранения текста в ресурсах, в корневой папке появляются файлы с именами RCX256.tmp,RCX257.tmp и т.д. а моя программа остаётся не тронутой.
Ещё момент...если эти фалы переименовать с tmp на exe, то как оказалось - это и есть моя программа с сохраннёным текстом (то что я добиваюсь).
....................
А теперь вопрос... может кто сталкивался с таким феноменом?
Или есть другие способы залить изменённый текст в ресурсы самой ислоняемой программы (именно в процессе выполнения)???
хмм.. попробуй перед записью залочить ресурс. похожий прикол, токо с чтением был на работе в нашем прожекте.. вроди как помогло..
Нельзя изменить файл, из которого порожден процесс, т.к. он открыт на чтение и расшарен только для чтения.
Цитата: Green
Нельзя изменить файл, из которого порожден процесс, т.к. он открыт на чтение и расшарен только для чтения.
Если бы он был открыт только на чтение, в него нельзя было бы писать. ;) На самом же деле он открыт на выполнение, и на всё время выполнения заблокирован системой от изменений. Задача похожа на "файл программы удаляет самого себя по окончании выполнения", в ней и подсмотри решение.