- ベストアンサー
プログラム実行中にプログラムを書き換えるには?
- プログラム実行中に、プログラムの一部を書き換えて保存する方法を教えてください。
- プログラムを書き換えて実行中に更新する方法を教えてください。
- プログラム実行中に、プログラムの特定の部分を変更して実行結果を反映させる方法を教えてください。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
実行中のファイルは、Windowsによってロックされているため、書き込みを行うことはできません。 また、文字列部分のみを書き換えても、実行ファイルが破損していないかチェックするための値があり、実行時にチェックされるため、ファイルが壊れていると判定されて実行できなくなります。 他の方法を考えましょう。
その他の回答 (7)
- titokani
- ベストアンサー率19% (341/1726)
#4,#7です。 あと、自己解凍ファイルなどで使われている方法ですが、EXEファイルの後ろにデータを追加する方法があります。 ただ、実行中の自分自身のEXEファイルを書き換えることはできないので、バッチファイルなどを使うことになるので、余計なファイルを作らないという方針からは遠ざかりますね。
お礼
いろいろな方法を教えていただきありがとうございました。
- titokani
- ベストアンサー率19% (341/1726)
#4です。 ファイルを作りたくないのであれば、レジストリを使うのもいいと思います。 最近はあまり流行らないようですが、使用には問題ないはずです。
- superside0
- ベストアンサー率64% (461/711)
初期値変更だけのために、ソース書き換えてコンパイルなんてトリッキーなことしなくても 変更時や終了時にINIファイルに次回の初期値を保存しておいて 再実行時にはGetPrivateProfileInt()とかを使って INIファイルから初期値を読み込むようにプログラムするだけでよいのでは?
お礼
回答ありがとうございます。余計なファイルは増やさないで1つのファイルにしたかったのですがやはりそれが無難な方法のようですね。
- titokani
- ベストアンサー率19% (341/1726)
そんなことは無理なので、通常はiniファイルとかを使います。 http://wisdom.sakura.ne.jp/system/winapi/win32/win156.html
お礼
回答ありがとうございます。いい方法がない場合はiniファイルの方法でやってみたいと思います。
- kumatti1
- ベストアンサー率60% (73/121)
APIフックでいいのでは。
お礼
回答ありがとうございます。APIフックについてはまだ全然わからないのでこれから勉強してみたいと思います。
- yama1718
- ベストアンサー率41% (670/1618)
普通の方法は、メインのプログラムからアップデート用のサブプログラムを起動してメインは終了させます。 サブプログラムはメインプログラムを書き変えてから(多くは最新版をネットからダウンロードして上書きしたり、パッチを当てたり)、メインを再起動します。 質問のプログラム中の文字列だけを書き変えるならリソースをいじる事になりますね。 プログラムの自己書き変えは昔はよく使われていたけど、一つ間違えば暴走するリスキーな方法ですし、ウィルスやマルウェアなどの不正プログラムが行う動作と同じなので、最近ではOSやシステムが保護してブロックしたり警告が出たりします。
お礼
回答ありがとうございます。参考になりました。
- notnot
- ベストアンサー率47% (4900/10358)
ソースプログラムを書き換えた後、コンパイルし直さないといけないということは認識されていますか? 普通は、別ファイルにして読み込みます。
お礼
回答ありがとうございます。出来上がったexeファイルには変数の値が書き込まれている部分があると思うのでそこを書き換え、上書きすればいいと単純に考えたのですが、それは無理なのですね。
お礼
回答ありがとうございます。参考になりました。