开发者

Out-of-Proc-COM-Server (x86): dllhost.exe looks in wrong registry path

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?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜