![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Добавить информацию в EXE-шник [D7, WinXP]
kyn66 © (2006-03-30 18:25:00)Скажите, возможно-ли во время работы программы добавлять в саму себя некие данные, ну типа счетчик запусков и т.д.?
Сергей М. (2006-03-31 15:57:00) [1]
> Т.е. ее можно вместе с прогой таскать, а можно в ресурс
> запихнуть, да?
Тебе и только тебе решать, где и как ее "таскать" и "хранить"..
Что же до меня, то я категорически против "таскания" и "хранения" файлового образа одного РЕ-модуля в файловом образе другого.
kyn66 (2006-03-31 15:26:00) [2]Если пока оставить в покое механизм обработки, изначально решить, как и где хранить DLL-ку. Т.е. ее можно вместе с прогой таскать, а можно в ресурс запихнуть, да?
Сергей М. (2006-03-31 15:21:00) [3]
> kyn66 © (31.03.06 15:17) [15]
> дафай-ка
Дафай-дафай ..
Что конкретно не понятно ?
kyn66 (2006-03-31 15:17:00) [4]> Сергей М.
Вот это уже деловое предложение, дафай-ка поглубже разовьем твою мысль, более детально...
Сергей М. (2006-03-31 14:42:00) [5]Спорить насчет "продвинутости" самого обыкновенного юзера, способного и желающего контролировать логику программера, я не буду.
Если же ты таки проникся идеей-фикс записи в pe-модуль и если read-only тебя не пугает, то схема м.б. примерно такова:
- перед завершением приложение инкрементирует сч-к и передает его значение в одну из ф-ций в составе "своей" DLL, ф-ция вызывается средствами rundll32(), кроме значения сч-ка в ф-цию параметром передается Id процесса приложения:
- вызванная в приложении "своя" DLL-ф-ция ждет завершения процесса, пишет в его EXE-файл обновленное значение сч-ка и завершает свое выполнение;
- при старте приложение проверяет наличие файла "своей" DLL и грузит ее в свое АП во избежание попытки удаления этого файла; если DLL не обнаружена (или считанное из своего файла значение сч-ка недопустимо), приложение "ругается" и немедленно завершается.
kyn66 (2006-03-31 14:27:00) [6]Хитрозадо можно, но в данном случае будет происходить проверка на наличия значения ключа, а не как такового. Отслеживается запись и просто тупо удаляется. Счетчик пошел считать с нуля 8-(. Конечно, если предположить, что юзер изначально не начнет проверять изменения в реестре при первом запуске, то да....
Сергей М. (2006-03-31 13:50:00) [7]
> обругание проверяется в самом начале
Ну вот так и говори, мол, меня интересует возможность хранения сч-ка фактов исполнения главной ветки алгоритма моего приложения, а не сч-ка фактов запуска моего приложения как такового.
Если аппаратные ключи не нравятся, можно хранить свой сч-к в том же реестре, но в хитрозадо закодированном виде. Многие производители ПО именно так и поступают.
kyn66 (2006-03-31 13:44:00) [8]> Раз ты обругал юзера, значит юзер тебя таки запустил) ..
Это обругание проверяется в самом начале, призагрузке главнойформы, а сч-к уж потом срабатывает.
Сергей М. (2006-03-31 13:22:00) [9]
> обругать и не запускаться вааще
Тебе же именно сч-к запусков нужно вести, правильно ?
Раз ты обругал юзера, значит юзер тебя таки запустил) .. Спрашивается, почему этот факт нельзя расценивать как очередной запуск, подлежащий учету в счетчике ?
kyn66 (2006-03-31 13:15:00) [10]> Сергей М
Ну чегость ты к этому ReadOnly привязался ??? У старфорса знаш скока проверок перед запуском? Вот и тут мона проверить... если ридонли - обругать и не запускаться вааще ;-)
Сергей М. (2006-03-31 13:11:00) [11]
> записывает любую инфу в конец файла
Угу.. особенно - в конец файла на read-only носителе ?
kyn66 (2006-03-31 13:07:00) [12]Я когда-то скачивал, но где и когда не помню некий модуль, позволяющий выполнять подобные операции. Он записывает любую инфу в конец файла.
Сергей М. (2006-03-31 12:35:00) [13]
> kyn66 © (31.03.06 11:45) [5]
Используешь, например, алладинов LPT-ключ и хранишь на его борту все что тебе заблагорассудится, в т.ч. и сч-к запусков.
Ну или USB-ключ ..
kyn66 (2006-03-31 11:45:00) [14]Согласен, и такое могет быть. Вот я ищу подходящий способ
Сергей М. (2006-03-31 11:24:00) [15]
> мне нужно сделать скрытый счетчик запусков программы
А если твоя программа будет запущена с read-only носителя ?
kyn66 (2006-03-31 11:16:00) [16]Изменения в реестре всегда можно вычислить. А мне нужно сделать скрытый счетчик запусков программы.
kutuzov47 (2006-03-30 23:06:00) [17]Почему бы тебе не пользоваться реестром?
А вообще, в программу можно добавить все чо угодно, но, как было сказано, программа не может это записать сама в себя. Есть огромное кол-во примеров по добавлению в exe музыки, картинок и т.д.
Rial (2006-03-30 21:18:00) [18]В сам запущенный EXE-шник -нет.
Пиши в INI файл или т.п.
Либо открывай другой EXE-шник, закрывай этот, новым добавляй в старый что-то, опять запускай старый, закрывай новый.
Вот только что ты такое хочешь добавить в EXE-шник, не понимаю. Вряд ли ты сможешь осуществить то что тебе надо твоим способом, если задал такой вопрос ...