Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2019, 16:05   #1
Комиссар Катани
Пользователь
 
Регистрация: 29.12.2012
Сообщений: 21
Сообщение Запись данных в ресурс EXE-файла

Добрый день!

Задача заключается в сохранении количества запусков программы в любой из ресурсов исполняемого файла. Т.е. при запуске EXE-файла, например, в событии OnCreate формы, происходит увеличение счётчика на единицу и сохранение его в ресурс данного исполняемого файла.

Альтернативные варианты, например, хранение в реестре или в ini-файле, исключаются. Полагаю, что удобнее всего хранить счётчик в секции "String" или "RCData".

Подскажите, какие функции использовать для записи данных в ресурсы исполняемых файлов? Может быть у кого-нибудь есть готовый пример?

Спасибо!
Комиссар Катани вне форума Ответить с цитированием
Старый 13.01.2019, 18:42   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от Комиссар Катани Посмотреть сообщение
и сохранение его в ресурс данного исполняемого файла. Полагаю, что удобнее всего хранить счётчик в секции "String" или "RCData".
имя секции не играет тут никакой роли, секции в РЕ-файле можно обзывать как-угодно, только атрибут ей нужно задать R/W - проблема в другом..

поскольку файл запущен на исполнение, то система блокирует доступ к его/дисковому образу на запись. т.е. пока экзе в памяти, ты не сможешь записать в него данные.
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 13.01.2019, 19:33   #3
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

я в конец EXE-шника записываю информацию. потом оттуда её беру.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 14.01.2019, 12:03   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
я в конец EXE-шника записываю информацию
А что говорит на это товарищ Касперский?
Black Fregat вне форума Ответить с цитированием
Старый 14.01.2019, 13:33   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Дык он, мабудь, не установлен
У нас на работе чел защищал свою "нетленку" (на которую никто и не покушался ввиду крайней специфичности) встроенным самопальным "guard'ом", который в конце концов форматнул ему С:

Последний раз редактировалось digitalis; 14.01.2019 в 13:40.
digitalis на форуме Ответить с цитированием
Старый 14.01.2019, 14:02   #6
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

товарищ Касперский никогда не касался кластеров моего ЖД.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 14.01.2019, 17:45   #7
Комиссар Катани
Пользователь
 
Регистрация: 29.12.2012
Сообщений: 21
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
я в конец EXE-шника записываю информацию. потом оттуда её беру.
А как Вы получаете доступ к файлу, если он заблокирован на запись? У меня на строчке F:=TFileStream.Create(Application.E xeName,fmOpenWrite);
появляется исключение "Невозможно открыть файл..."
Комиссар Катани вне форума Ответить с цитированием
Старый 15.01.2019, 07:16   #8
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

1. запущена программа (КОПИЯ 1)
2. я создаю копию программы (КОПИЯ 2) и уже туда в конец записываю информацию.
3. запускаю программу КОПИЯ 2.
4. программа КОПИЯ 1 закрывается и доступ к ней легко получить.
5. работающая КОПИЯ 2 удаляет первоначальный вариант КОПИЯ 1, в конце которого была записана старая информация или информация вообще отсутствовала.
----
вот так. данный механизм у меня реализован в простой программе "попрыгушка по дискам" - копирует себя на один из дисков, в конец записывается старый путь. потом, по этому старому пути удаляется программа, которая там уже не нужна - типа затирает за собой следы. всего занимает 31 кб.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 15.01.2019 в 07:19.
NetSpace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновить ресурс в EXE типа RCDATA как Text Человек_Борща Win Api 15 14.12.2012 21:45
получение данных из файла и запись этих данных в другой. Jurii77 Microsoft Office Excel 9 23.11.2011 09:42
Запись данных в запущенное exe dmitriegorovih Общие вопросы Delphi 18 02.11.2010 14:57
чтение из одного exe файла, и запись в другой exe inndim Общие вопросы Delphi 2 04.02.2009 15:23
Как извлечь базу данных из exe файла? ANDRU13 Общие вопросы Delphi 8 29.01.2009 16:51