1

これは、問題を実際に修正する方法と場合についての質問です。

C/C++ を使用して、ユーザー設定を完全に内部的に exe に保存するにはどうすればよいですか?

これは可能ですか?私は本当に方法を考えることができないので、私はほとんどただ興味があります.いくつかのアプリケーションはそれを行うようです.

注: 子プロセスの生成、ファイル、クラウド、またはレジストリの使用などの方法については既に知っていますが、実際に設定を内部的に保存できるかどうか疑問に思っていました。

4

3 に答える 3

3

回り道ですができます。ただし、実行可能ファイルを変更すると、再度実行できなくなる可能性があるため、その影響について心配する必要があります。

たとえば、単純なプログラムを作成する場合

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

実行可能ファイル (メモ帳で開いて検索した場合) で、文字列 "This is some text to display" がバイナリ ファイル内のプレーンテキストであることがわかります。

私が持っている理論は、変数への挿入演算子を含む stringstream オブジェクトを使用して、値を取得できるということです。

したがって、実行可能ファイルをロードし、その後スレッドまたはコンソール アプリをロードして、プレーン テキストで提供される実行可能ファイル内の値を検索し、それらを上書きします。ただし、サイズが区切られているのか、そのようなものなのかはわかりません。したがって、そうするとプログラムが壊れる可能性が高くなります。

繰り返しますが、これは潜在的な回避策ですが、なぜこのようなことをしたいのかわかりません。言うまでもなく、実行可能ファイル全体を壊す可能性があります。

于 2012-10-04T00:18:43.007 に答える
1

これを回避するには、実際の実行可能ファイルと構成ファイルを自己解凍型の圧縮ファイル (zip など) にパックします。自己解凍型の実行可能ファイルは一時ディレクトリに解凍され、そこからプログラムが実行されます。プログラムは構成ファイルを作成/変更し、それらを自己解凍ファイルに再度パックできます。自己解凍圧縮ファイルの場所を特定して再圧縮できるようにする方法など、対処すべきことがいくつかあります...

于 2012-10-04T12:13:33.543 に答える
1

実行可能ファイルは実行中に自分自身を変更できないため、実際には方法がありません。閉じた後に元の実行可能ファイルを変更する別のプロセスを生成できますが、それはばかげています。

この正確なトピックと、人々がどのようにユーザー設定を保存する傾向があるかについて、興味深い議論があります:

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

于 2012-10-03T23:58:09.923 に答える