4

私が制御できない実行可能ファイルのオブジェクトの代わりとして使用できる COM オブジェクトを提供しようとしています。すべて同じインターフェイスを使用して、この COM オブジェクトの実装を作成しました。この置換をたまにしか使用できないようにしたいので、その登録で元のオブジェクトを置換したくありません。

実行可能ファイルのマニフェストを変更して、レジストリを介してオリジナルを見つけるのではなく、dll を調べて com オブジェクトを見つけることにより、reg-free COM を使用してオリジナルの代わりに COM オブジェクトをロードするように実行可能ファイルを取得できます。

ここまでは順調ですね。ただし、これを行うには、実行可能ファイルのマニフェスト ファイルを変更する必要があります。この変更を永続的なものにしたくありません。通常、実行可能ファイルは「プログラム ファイル」にインストールされるため、このファイルを変更するには管理者権限も必要です。

理想的には、元の実行可能ファイルを変更せずにそのままにしておくことです。次に、必要に応じて、作成した別のランチャー プログラムが、実行可能ファイルの元のマニフェスト ファイルではなく、com オブジェクトにリダイレクトするマニフェストを使用して、要求された実行可能ファイルをロードします。

このようなことは可能ですか?それとも、私がやろうとしていることを行うためのより良い方法ですか?

注: この実行可能ファイルのすべての依存関係がどのようなものになるか事前にわからないため、書き込みアクセス権のある場所で変更されたマニフェストを使用して、実行可能ファイルの複製コピーを作成することはおそらくできません (この実行可能ファイルの dll が必要になる場合があります)。同じディレクトリ、またはサブディレクトリのデータ ファイル)。変更された実行可能ファイルの作業ディレクトリを元の実行可能ファイルのディレクトリに設定することはできますが、実行可能ファイルがそのファイルの場所に基づいて何かを行うと、壊れてしまいます。

4

1 に答える 1