Дальнейшее развитие метода, описанного в статье
"Окольцовывание программ" (
/blog/siliks).
Как говорится, зачем изобретать велосипед, если он уже изобретён? Нужно лишь оснастить его нужными нам "свистелками и перделками".
Кроме информации окольцовавания можно добавлять произовольную информацию, например заметки и комментарии пользователей о программе.
Функции работы с ini-файлами прекрасно работают, даже если в ini-файл напихать "левый" мусор. (В данном случае "мусором" будет сам код exe-файла). Таким образом, можно использовать всю мощь отработанного и отлаженного (и придуманного до нас) механизма работы с ini-файлами.
В конец exe-файла можно дописать всё что угодно, и он будет работать
Хотя Windows и не дает изменять запущенный exe-файл, он позволяет его скопировать и переименовать.
Чтение самого себя никаких проблем нам не создает - открываем свой exe-файл как ini и читаем.
Алгоритм записи такой же как и в случае "Окольцовывания файлов".
1) переименовываем свой файл в
ExeFileName.exe.old 2) копируем свой файл в
FileName.exe 3) пишем всё что хотим в
FileName.exe как в ini-файл.
4) перед выходом из программы запускаем новую копию с ключом "
/del ExeFileName.exe.old" чтобы удалить старый файл.
5) новая копия, будучи запущена с ключом
/del удаляет
ExeFileName.exe.old и завершает свою работу
Пример реализации на Borland Delphi 5 + библиотека KOL (для уменьшения размера).
Для удобства использования функции по "созданию заметок в exe-файле" вынесены в отдельный модуль:
ExeFileNotes.pas Особенности реализации: для корректной работы после компиляции к exe-файлу нужно добавить символ перевода строки (иначе первая запись в exe-файл сделает его неработоспособным).
Проще всего это сделать командой:
copy Example.exe+blank.txt где
blank.txt - текстовый файл, содержащий перевод строки.
скачать пример: http://cp.people.overclockers.ru/cgi-bin/dl.pl?id=34325&filename=exefilenotes.rar Обсуждение: https://forums.overclockers.ru/viewtopic.php?t=278243