Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись и чтение в exe 
V
    Опции темы
Elfet
Дата 22.1.2007, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Возможно ли такое? Записывать и читать произвольные данные в загрузочный модуль(exe)? Например PACMAN записывал в себя же таблицу результатов.  smile 


--------------------
PM MAIL WWW Skype   Вверх
mr.DUDA
Дата 22.1.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



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


--------------------
user posted image
PM MAIL WWW   Вверх
marcusmae
Дата 22.1.2007, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



В сам исполняемый модуль не удастся, однако средствами .NET в процессе выполнения экзешника возможно создать динамическую сборку, а потом сохранить её на диск. Допустим, сохранить в виде  DLL, а при следующем запуске экзешника подгружать из неё какие-нибудь новые типы...

На этот счёт готов угостить своим примером кода, если потребуется ( просто, он не очень маленький  smile ).

Это сообщение отредактировал(а) marcusmae - 22.1.2007, 19:07


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Elfet
Дата 22.1.2007, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Ммм, с DLL это тоже неочень подходит. Мне хотелось всё в одном файле собрать smile


--------------------
PM MAIL WWW Skype   Вверх
mr.DUDA
Дата 22.1.2007, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Elfet, могу сварганить пример, но будет с очень большими извращениями - как например создание нового EXE в temp-директории, выход из основного с запуском вспомогательного EXE, дожидающегося выхода из основного; подмена одного экзешника другим.


--------------------
user posted image
PM MAIL WWW   Вверх
marcusmae
Дата 22.1.2007, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



А кстати, может быть возможность Edit&Continue в VisualStudio как-то коррелирует с этой задачей? = Там наверно реализовано по типу так же : есть некоторый процесс, vshost, который хостит исполняемый модуль, может его остановить, отредактировать on-the-fly и тд.

Сам себя изменяет - думаю, это в принципе вряд ли возможно. Хотя, как показывает практика, с помощью абстракций любое чёткое правило можно поставить с ног на голову...

Это сообщение отредактировал(а) marcusmae - 22.1.2007, 21:53


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
mr.DUDA
Дата 22.1.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(marcusmae @  22.1.2007,  20:45 Найти цитируемый пост)
А кстати, может быть возможность Edit&Continue в VisualStudio как-то коррелирует с этой задачей? = Там наверно реализовано по типу так же : есть некоторый процесс, vshost, который хостит исполняемый модуль, может его остановить, отредактировать on-the-fly и тд.

Ну в общем, так оно и реализовано. Есть hosting process, который загружает EXE и выполняет его (тот самый .vshost.exe), и в случае edit-and-continue происходит перезагрузка EXE с сохранением всех данных и последующей их загрузкой.


--------------------
user posted image
PM MAIL WWW   Вверх
Elfet
Дата 22.1.2007, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Цитата(mr.DUDA @  22.1.2007,  22:34 Найти цитируемый пост)
Elfet, могу сварганить пример, но будет с очень большими извращениями - как например создание нового EXE в temp-директории, выход из основного с запуском вспомогательного EXE, дожидающегося выхода из основного; подмена одного экзешника другим.


Да, нет smile Спасибо, но не надо smile


--------------------
PM MAIL WWW Skype   Вверх
VectorMan
Дата 24.1.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antihero
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 9.4.2006

Репутация: нет
Всего: 4



Как вариант, можно записывать данные в потоки ntfs исполняемого файла, но у такого подхода есть очевидные недостатки  smile 
PM   Вверх
marcusmae
Дата 24.1.2007, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Цитата

Как вариант, можно записывать данные в потоки ntfs исполняемого файла, но у такого подхода есть очевидные недостатки


так-так, а можно по-подробнее?


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
VectorMan
Дата 24.1.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antihero
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 9.4.2006

Репутация: нет
Всего: 4



PM   Вверх
marcusmae
Дата 25.1.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Цитата

File Streams


А, файловые потоки, понял, извиняюсь.

Обрисую проблему в моём понимании. В целом, наверно, речь идёт не о топорной записи в исполняющийся .EXE, а

1) о динамическом дополнении кода
2) о быстром сохранении этих дополнений
3) о выгрузке более ненужных типов из памяти

Первое сделать нетрудно, методы есть. Второе, третье и прелесть всей технологии упирается в необходимость привлекать жёсткие диски (неоднократные перезаписи + запуски нового варианта) -  работать будет медленно. = Как это обойти? = Можно приделать виртуальный диск в виде маленького сервиса, работающего вместе с программой. Но хорошо бы этот виртуальный диск иметь в памяти, как это сделано, например, в никсовых Live-дистрибутивах. Только вот под Винду примеров таких решений почему-то не нашёл... smile Нет такой возможности?


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
kurzon
Дата 7.10.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.8.2007

Репутация: -8
Всего: -11



Цитата(mr.DUDA @ 22.1.2007,  21:34)
Elfet, могу сварганить пример, но будет с очень большими извращениями - как например создание нового EXE в temp-директории, выход из основного с запуском вспомогательного EXE, дожидающегося выхода из основного; подмена одного экзешника другим.

Пожалуста сваргань.

Это сообщение отредактировал(а) kurzon - 7.10.2007, 17:54
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.