We've created our own implementation of IXMLHttpRequest in a COM server (.exe) like so:
interface IMyXMLHttpRequest : IXMLHttpRequest {
...
};
coclass MyXMLHttpRequest {
[default] interface IMyXMLHttpRequest;
};
The problem is that when the build tries to register the COM server, we get the error "Error accessing the OLE registry". I debugged the registration code and it is failing in RegisterTypeLib. It looks like it is trying to pull in some of the type information relating to IXMLHttpRequest and (guessing here) can't change some registry keys related to that interface.
Is it just plain wrong to derive from IXMLHttpRequest? Should we be deriving from IDispatch instead and making our class use a dual interface? Or is it possible to derive from IXMLHttpRequest and we're just doing it wrong?
Update: I've uploaded a reproducible test case. I simply generated an ATL COM server using the Visual Studio wizard, and then I created a new interface derived from IXMLHttpRequest and a coclass that implements it. The registration fails as I described. If I change the interface to derive from IDispatch then it works fine. 100% reproducible on Windows 7 using Visual Studio 2010, running with elevated privileges.
