I write for a COM-Server (x86) a wrapper based on a DLL surrogate (x64) described like here to get access from a 64-bit-client.
I registered the COM-Server (x86) and the Proxy/Stub-DLL (x86) and they registered in the WOW6432-Nodes.
But when I call the instance with
IShellServerx86* pShellServer = NULL;
::CoCreateInstance(__uuidof(CShellServerx86), NULL, CLSCTX_LOCAL_SERVER |
CLSCTX_ACTIVATE_32_BIT_SERVER, __uuidof(IShellServerx86),
(void**)&pShellServer);
the dllhost.exe is started and I get back "Class not registered". When I analyse the dllhost.exe (x86-version!) with procmon I can see that the dllhost.exe tries to look up the paths in the 64bit-registry and not in the WOW6432-Nodes.
I tried to dupliate the registry entries into the 64-bit-paths but then I get back "%1 is not a WIN32 applicat开发者_如何学Cion".
How can I can COM to look up in the 32-bit paths? Is the flag "CLSCTX_ACTIVATE_32_BIT_SERVER" not enough?
Thanks for your help in advance.
Tobias
EDIT:
I found at MSDN this article that told that with Windows 7 registry reflection is disabled? It is said that all CLSIDs that contains a InprocServer32-Key are not reflected. But how then can I achieve reflection when I use System-Surrogation?
精彩评论