Groups | Blog | Home
all groups > dotnet interop > april 2008 >

dotnet interop : In 64-bit Windows Vista, the class object registered by a 64-bit L



PAsp
4/24/2008 4:25:00 AM
We have a .Net application that registers as a LocalServer32 in the registry
during installation. That is, it sets the registry entries
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{our CLSID}
\LocalServer32 = {full path to our exe}
\ProdId = {our prog id}

When the application starts and detects the /Embedding or /Automation
command line arguments, it registers a class object with our CLSID using a
call to CoRegisterClassObject, specifying CLSCTX_LOCAL_SERVER and
REGCLS_SINGLEUSE. This allows our application to be started and communicated
with from a client process, for example another .Net application or a
JavaScript running in a web browser.
As far as we know, we have followed the standard pattern for implementation
of COM servers. Our solution works perfectly fine on Windows XP 32-bit,
Windows XP 64-bit and on Windows Vista 32-bit. However, on Windows Vista
64-bit the class object registered by our application is never detected by
the client and thus the inter-process communication is never established.
Instead the client times out after a while.
Since everything work fine if we compile our application as a 32-bit
executable, the problem might be related to the bitness expected by the
client and the bitness that our application is executed with.
AddThis Social Bookmark Button