7


1

プログラムで実行時に実行可能ファイルのリソースを編集することは可能ですか? もしそうなら、どうですか? そうでない場合、リソースを変更するために簡単に使用できる別のプログラムはありますか?

ありがとう、Derek。

1 Answer


0


はい、それは可能です、特に容易ではないです。 それは基本的にリソースコンパイラを書くことを必要とします(少なくともあなたが修正したいリソースタイプのために)。

たとえば、私はかつて実行時にデータベースから入力を取り出すメニューコンパイラを作成しました(その後、結果をDBに保存しました)。 ソーステーブルが変更されていない場合は既存のリソースが使用され、それ以外の場合は再構築されました。

メニューリソース(そしてダイアログと私は信じています)の場合には注意が必要なのは、特定のメンバーがフラグ設定と厳密な配置要件によってのみ存在するということです。

exeに既に存在するリソースを変更する場合は、リソースデータをメモリバッファにコピーする必要があります(新しい要素を追加する場合は追加のスペースを使用できます)(FindResource、LockResource、メモリコピー、UnlockResourceの順に使用)。

変更を加えたら、次に間接作成機能の1つを使用します(例: CreateMenuIndirect)とバッファのアドレスを渡します。

リソースAPIでは、そのようなバッファをアプリケーションバイナリに書き戻すことができますが、コード署名を使用する場合は署名が壊れる可能性があるため、非常に注意してください。 また、そのAPIが実際に実行されているプログラムに対して機能するかどうかもわかりません。