DLLHost.exeは、別の実行可能ファイルでDLL COMサーバーをインスタンス化できるDLLサロゲートの例です。 DllSurrogateExecutableレジストリキーを使用して使用する任意の実行可能ファイルを指定することができ、独自のDLLサロゲート実行ファイルcodeを実装して、Pinを直接使用することができます。
もちろん、別の問題はCOMオブジェクトの作成方法です。 DLLサロゲートは、DLLサロゲートを使用できることを指定するAppIDに対してクラスが登録されている場合にのみ使用されます。および COMオブジェクトの作成者は、CoCreateInstanceなどに対してCLSCTX_LOCAL_SERVERを指定します。そのような場合には、コンテキストを変更するために呼び出し元を変更する必要があります。
あなたのクラスがどのAppIDに登録されているかを調べるには、OleViewなどのツールを使用できますが、レジストリエディタから行うのは難しくありません。 CLSID GUIDを取得した場合は、HKEY_CLASSES_ROOT\CLSID\GUID
の下で検索してください。その下にAppID値があるかもしれません。これはHKEY_CLASSES_ROOT\AppID\GUID2
を指しているGUIDであり、DLLサロゲートとして登録されているかどうか、DllSurrogateExecutableキーを置くことができるかどうかが含まれます。
レジストリにはハードコードされていません。 AppId guidが必要です(CLSIDレジストリキーで宣言されています)。それから、HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ Classes \ AppIDで探します。 DllSurrogate値は、ホストする必要があることを示します。値が空の場合、dllhost.exeになります。これを別の実行可能ファイルに変更することができます。別の名前のdllhost.exeのコピーに限定されません。 –