Yes, it is possible with DCOM, and your worst problems will be setting permissions for the DCOM component and doing the work of data marshaling.
Is this "thin COM wrapper" a sensible approach to enable 64-bit functionality of a 32-bit COM DLL?
Yes, we did it once when we had to provide an In-proc COM server with 32-bit and 64-bit versions. Basically, we had such a thin server that will be implemented in both 32 and 64 bits (the consumer will download the corresponding one) and redirects calls to the 32-bit outproc server hosted in DCOM.
Is there a reason this approach will not work specifically for Windows Shell Extensions?
You may not be able to set the correct permissions for the outproc server. Most likely it will work. It is impossible to imagine another reason.
Will 64-bit interface definitions use identical GUIDs as their 32-bit copies?
Yes. The COM interface is a contract. You can have as many contract implementations as possible.
Are there any good resources for calling a 32-bit COM-API from a 64-bit COM DLL
Nothing special is required. Just call CoCreateInstance() with CLSCTX_ALL and run it.
Your main concern will be marshaling. You must march data between the client and server, which will now be in different processes. It is best to use marshaling automation (aka typelib marshaling). If it happens that the original interface is not compatible with Automation, try introducing a new interface compatible with Automation, and your shell will then be the server as an adapter. It may be that you may not be able to create a new Automation-compatible interface for your task, but try this because it is your best bet.
Whenever something does not work - something is not marshaled, some dependent files are not found - use Process Monitor to see what happens with the error.
source share