Как сохранить настройки программы в ее ресурсах?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by blackbox, 18 May 2015.

  1. blackbox

    blackbox Elder - Старейшина

    Joined:
    31 Dec 2011
    Messages:
    364
    Likes Received:
    62
    Reputations:
    11
    Вот например у меня есть программка и я хочу некоторые настройки (меньше десяти текстовых строчек) хранить у нее в ресурсах, то есть чтобы пользователь ввел какие-то данные и программа их запомнила не сохраняя в файл/реестр, то есть с собой носила свои настройки при минимуме файлов. Или полюбому придется сначала все сбросить в файл и потом добавить этот файл в свои ресурсы? Как это вообще лучше реализовать?
     
  2. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    272
    Likes Received:
    268
    Reputations:
    2
    присоединяюсь к вопросу (можно ли обойтись одним ехе?)
     
  3. DartPhoenix

    DartPhoenix Elder - Старейшина

    Joined:
    15 Sep 2013
    Messages:
    571
    Likes Received:
    6,140
    Reputations:
    15
    Легких путей не ищем :)
    Обойтись одним exe конечно можно, но стоит ли оно того ?

    Во-первых есть NTFS потоки. Мало у кого сейчас FAT32.
    Во-вторых структура ресурсов PE вполне разбирается и собирается поэтому вполне можно пересобрать в памяти.
    В-третьих под настройки можно заранее выделить ресурс, в который их и сохранять. Почему нет ?
    В-четвертых где-то были АПИ которые с ресурсами работают и позволяют читать и писать без низкоуровневых танцев с бубном.

    Вопрос только в том (кроме первого случая) - как записать что-то в заблокированный на запись файл.
    1. Заюзать временный exe (или вообще батник), который будет править родительский. (На этом месте приличный хеккер подавится пивом - похлопайте ему по спине :) )
    2. Сделать это красиво внедрившись в чужой процесс и прочие радости экстремального кодинга :)
    3. Помнится был способ через MoveFile реализовать самоуничтожение. Т.е. Из программы перемещаешь свой екзе куда-либо - и можешь после этого удалять. Тыщу лет не пользовался, но кто знает, может работает. Только вместо удаления - правим ресурсы и перемещаем назад, на родину.

    =======
    В общем можно. "Дорогу осилит идущий" (с) :)
     
    blackbox likes this.
  4. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    942
    Likes Received:
    428
    Reputations:
    139
    BeginUpdateResource() -> UpdateResource() -> EndUpdateResource()
     
    blackbox likes this.
  5. blackbox

    blackbox Elder - Старейшина

    Joined:
    31 Dec 2011
    Messages:
    364
    Likes Received:
    62
    Reputations:
    11
    Спасибо, доходчиво, оперативно.
     
Loading...