私は現在、数年前にアウトソーシングしたソフトウェアを保守していますが、それは十分に文書化されていません。この部分は、サードパーティのアプリケーションで使用するためのCOMサーバーであり、必要なすべての展開を行うインストーラーです。
32ビットDLLとしてコンパイルされ、32ビットアプリケーションから使用することを目的としたコアがあります。また、64ビットDLLとしてコンパイルされ、64ビットアプリケーションからの使用を目的としたシムもあります。シムはCoCreateInstance()を呼び出してコアをインスタンス化し、呼び出しをコアにリダイレクトします。コアは、他の32ビットライブラリの膨大なセットに依存しています。
32ビットコアは、通常のin-procサーバーとまったく同じように登録されます。HKCR\ CLSIDの下に、コアクラスIDとInprocServer32の下のライブラリへのパスを含むエントリがあります。64ビットシムも同じ方法で登録され、64ビットシムにアプリケーションIDが導入されます。これはHKCR \ CLSIDの下に追加され、DCOMにも登録されます。DCOMコンソールにそのアプリケーションIDのエントリがあります。
現在、DCOM登録は奇妙に見えます。シムがコアではなくDCOMに登録されるのはなぜですか?32ビットコアをDCOMに登録して、別のプロセスでインスタンス化し、64ビットコンシューマーから保護する必要があると思います。しかし、どうやらそれは現在行われているように動作します。32ビットコアではなく64ビットシムをDCOMに登録する意味は何ですか?