IXMLHttpRequest
次のように、COMサーバー(.exe)で独自の実装を作成しました。
interface IMyXMLHttpRequest : IXMLHttpRequest {
...
};
coclass MyXMLHttpRequest {
[default] interface IMyXMLHttpRequest;
};
問題は、ビルドがCOMサーバーを登録しようとすると、「OLEレジストリへのアクセス中にエラーが発生しました」というエラーが発生することです。登録コードをデバッグしましたが、失敗しRegisterTypeLib
ます。に関連するタイプ情報の一部を取得しようとしているようでありIXMLHttpRequest
、(ここで推測して)そのインターフェイスに関連する一部のレジストリキーを変更できません。
から派生するのは明らかに間違っていますIXMLHttpRequest
か?代わりに派生しIDispatch
て、クラスにデュアルインターフェイスを使用させる必要がありますか?それとも、派生することは可能でIXMLHttpRequest
あり、私たちはそれを間違っているだけですか?
更新:再現可能なテストケースをアップロードしました。VisualStudioウィザードを使用してATLCOMサーバーを生成し、それIXMLHttpRequest
を実装するコクラスから派生した新しいインターフェイスを作成しました。説明したように、登録は失敗します。派生元のインターフェイスを変更すると、正常に機能しますIDispatch
。Visual Studio 2010を使用し、昇格された特権で実行されているWindows 7で100%再現可能。