Как полностью сохранить пользовательские настройки внутри exe с C / C ++?

это больше вопрос о том, как и если, на самом деле, чтобы решить проблему.

Как вы можете хранить пользовательские настройки полностью внутри exe с C / C ++?

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

Примечание: я уже знаю о таких методах, как порождение дочернего процесса, использование файлов, облако или реестр, мне просто интересно, можно ли на самом деле сохранить настройки внутри.

1

Решение

Вы можете, хотя и окольным путем.
Но вам придется беспокоиться о последствиях изменения исполняемого файла, которые могут помешать его повторному выполнению.

например, если вы делаете программу с простым

int main()
{
std::cout<<"This is some text to display"<<std::endl;
return 0;
}

в исполняемом файле (если вы откроете в блокноте и выполните поиск) вы увидите, что строка «Это какой-то текст для отображения» является открытым текстом внутри двоичного файла.

У меня есть теория, что вы можете использовать объект stringstream с оператором вставки в переменную, а затем получить значение.

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

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

3

Другие решения

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

Здесь есть интересное обсуждение именно этой темы и того, как люди склонны хранить пользовательские настройки здесь:

http://cboard.cprogramming.com/cplusplus-programming/83391-saving-settings-data-executable-itself-permenent-basis.html

1

Обходным путем для этого может быть упаковка реального исполняемого файла и файла конфигурации в самораспаковывающийся сжатый файл (zip или аналогичный). Самораспаковывающийся исполняемый файл распаковывается во временный каталог и выполняет программу оттуда. Программа может создавать / изменять файлы конфигурации и снова упаковывать их в самораспаковывающийся файл. Было бы несколько вещей, с которыми нужно иметь дело, например, как определить, какое расположение самораспаковывающегося сжатого файла можно перепаковать …

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector