How to register a 32-bit .DLL COM+ application on Windows 2008 R2

user1507674 picture user1507674 · Jul 6, 2012 · Viewed 58.3k times · Source

I have read through all the similar questions but am not finding my exact problem answered. I have tried all the similar recommendations.

I am forced to migrate from a Windows Server 2003 environment to a Windows Server 2008 R2 environment running IIS 7.5. I have a web application that calls COM objects in a 32-bit DLL. The COM object was created from VB6. Here is what I have done to date:

  1. I have enabled 32-bit on my IIS Application Pool.
  2. I have registered the .DLL and it's dependent .DLL using C:/windows/syswow64/regsvr32.exe -- the registration is successful.
  3. I have verified that the .DLL and it's components are found in the registry using C:/windows/syswow64/regedit
  4. I have created a COM+ object in Component Services (using syswow64/dcomcnfg) and started them.
  5. I have created a role "Users" and added the group 'Everyone' to it.

When I run my application the web page hangs. I can find the following error in the COM object's log file:

ActiveX component can't create object Error: [429]: CDataAdministrator::OpenCatalog

I have compared the setup between the new server and the old server. One thing that I notice is that on the old server, the DataAdministrator object (DataAdministrator.CDataAdministrator) is listed under the expansion of DCOM Config, but on the new server it is not. And I cannot seem to get it to show up there.

I have no errors in the event history or in IIS web logs. To me it appears that everything is registered, but it won't run. I can see a DLLHOST.EXE*32 in the task manager running under the account that I specified.

I'm at a loss here.... help?

Answer

BarrieK picture BarrieK · Jul 17, 2012

Register 32 bit COM applications on a 64-bit server

•Start...Run...C:\WINDOWS\SysWOW64\mmc comexp.msc /32

As described here http://msdn.microsoft.com...dcomcnfg.exe_and_64-bit_applications

Basically this runs the 32-bit version of dcomcnfg.exe so that you can set the DCOM settings for your 32-bit app on a 64-bit machine.