我们已经IXMLHttpRequest
在 COM 服务器 (.exe) 中创建了自己的实现,如下所示:
interface IMyXMLHttpRequest : IXMLHttpRequest {
...
};
coclass MyXMLHttpRequest {
[default] interface IMyXMLHttpRequest;
};
问题是,当构建尝试注册 COM 服务器时,我们收到错误“访问 OLE 注册表时出错”。我调试了注册码,它在RegisterTypeLib
. 看起来它正试图提取一些与该接口相关的类型信息,IXMLHttpRequest
并且(在这里猜测)无法更改与该接口相关的一些注册表项。
从中派生出来是完全错误的IXMLHttpRequest
吗?我们是否应该派生IDispatch
并让我们的类使用双接口?或者是否有可能从中派生IXMLHttpRequest
而我们只是做错了?
更新:我上传了一个可重现的测试用例。我只是使用 Visual Studio 向导生成了一个 ATL COM 服务器,然后我创建了一个派生自它的新接口IXMLHttpRequest
和一个实现它的 coclass。如我所述,注册失败。如果我将接口更改为从中派生,IDispatch
则它可以正常工作。使用 Visual Studio 2010 在 Windows 7 上 100% 可重现,以提升的权限运行。