0

ATL C++ インプロセス COM コンポーネントがあります。このコンポーネントは外部で使用するためのものではありません。アプリケーションで使用するためだけに必要です。

ときどき、ユーザーがそれを COM+ に入れると、あらゆる種類の奇妙なエラー (「アクセスが拒否されました」など) が発生することがあります。最善の方法は、コンポーネントを COM+ に配置することを禁止して、インプロセス サーバーとしてのみ使用できるようにすることです。これを行う方法はありますか?

4

2 に答える 2

1

モジュールの登録を防止することが完了し、この記事の説明に従ってDLLを使用します。dllから直接COMオブジェクトを作成します。

于 2009-10-08T23:42:07.700 に答える
1

独自のインターフェースのみを実装していますか?その場合、IDLでそれらに「[local]」のマークを付けてから、すべてのマーシャリング情報(タイプライブラリ、P / S)などのモジュールを削除できるはずです。

利用可能なマーシャリングの根拠がない場合、COM+はモジュールを登録できないはずです。COM +の傍受メカニズムは、オブジェクトをリモートコンテキストに強制し、プロキシとスタブおよびそれらの対応するパーティの間に入ることに依存しています。したがって、マーシャリングの機会をすべて削除しても、インターフェイスメソッドをインターセプトできないはずです。

于 2009-09-25T11:59:33.533 に答える