1

这更多是关于如何以及是否实际解决问题的问题。

如何使用 C/C++ 在 exe 内部完全存储用户设置?

这甚至可能吗?如果可以,怎么办?我主要只是好奇,因为我真的想不出办法,对我来说,一些应用程序似乎可以做到这一点。

注意:我已经知道诸如生成子进程、使用文件、云或注册表等方法,我只是想知道您是否可以在内部实际保存设置。

4

3 回答 3

3

你可以用迂回的方式。但是您将不得不担心修改可执行文件的影响,这可能会阻止它再次被执行。

例如,如果你用一个简单的

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

您将在可执行文件中看到(如果您在记事本中打开并搜索)字符串“这是要显示的一些文本”是二进制文件中的纯文本。

我的理论是,您可以使用带有插入运算符的字符串流对象到变量中,然后获取值。

因此,您将加载可执行文件以及之后的线程或控制台应用程序,以搜索以纯文本形式提供的可执行文件中的值并覆盖它们。但是,我不知道它们是大小分隔的还是类似的。所以这样做很有可能会破坏你的程序。

同样,这是一个潜在的解决方法,但我不明白你为什么希望做这样的事情。更不用说你可能会破坏整个可执行文件。

于 2012-10-04T00:18:43.007 回答
1

实际上没有办法,因为可执行文件在运行时无法修改自己。您可以生成另一个进程,该进程将在关闭后修改原始可执行文件,但这很愚蠢。

关于这个确切的主题以及人们如何在此处存储用户设置有一个有趣的讨论:

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

于 2012-10-03T23:58:09.923 回答
1

解决此问题的方法可能是将真正的可执行文件和配置文件打包在一个自解压压缩文件(zip 或类似文件)中。自解压可执行文件将解压缩到一个临时目录并从那里执行程序。该程序可以创建/修改配置文件并将它们再次打包到自解压文件中。有几件事需要处理,比如如何定位自解压压缩文件的位置以便能够重新打包......

于 2012-10-04T12:13:33.543 回答