ActiveX component can't create object / dwmapi.dll / windows 2003 / iis 6

Hi all, I'm in the process of moving an IIS 5 application to a windows 2003 / IIS 6 environment. I have a com object that supplies part of the shopping cart application and I'm getting this error:

Microsoft VBScript runtime error '800a01ad'
ActiveX component can't create object
H:\****************************, line 701

Where line 701 is a sever.createobject line to initialize the com object. After much research, I ran a dependency checker on the dll and found that 2 dll's are missing:

dwmapi.dll
devmgr.dll

I found the devmgr.dll in another part of the system, so I just copied it to the same folder with my com object to make the depends program happy. I have no idea what dwmapi.dll is nor why I need it. My windows 2000 server doesn't have it, and the same dll on that server doesn't depend on it.

The object was created in VB6 and installed using the COM+ services. The only references I have in the project are to ADO 2.8 and XML 4.0.

What's the secret handshake to get this to work right??
LVL 2
AJKConceptsAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

golfDoctorCommented:
Need to assign permissions for IUSR account on the DLLs.  2003/IIS6 has stricter security policies.
jitgangulyCommented:
You also need to register those 2 dlls on your server.

Go to your server, start-->run --> regsvr32 dwmapi.dll
and repeat the same for devmgr.dll also.

Note you may have to specify the full path of the DLLs

Give IUSR_{yourcomputername} user permission to those DLL
AJKConceptsAuthor Commented:
Thanks for the quick response. That was the first thing I checked. IUSR has read/execute permissions on my dll.

I forgot to mention that the new server has Windows 2003 / 64 bit. The old one is 32. Is this important?
Introduction to R

R is considered the predominant language for data scientist and statisticians. Learn how to use R for your own data science projects.

AJKConceptsAuthor Commented:
I was able to register the devmgr.dll but it's not liking the dwmapi.dll. I downloaded it from the Internet and tried to register it. Says it can't find procedure.
AJKConceptsAuthor Commented:
That's where I got the dll. I feel better that someone else pointed me to the same place.
jitgangulyCommented:
:-)
Is it possible to reinstall IIS, if you have not done so yet
jitgangulyCommented:
BTW can I see your code please ?
AJKConceptsAuthor Commented:
set objXMLCart = server.CreateObject("GoCart.Cart")

I have reinstalled IIS. I think the problem lies with the 2 missing dlls but I have no idea how to resolve it.
golfDoctorCommented:
What are the exact error messages?
jitgangulyCommented:
You said those are VB dlls, right. IF you have VB IDE installed on the server, just open the project and make DLL. It would pick up the correct one or at least would say invalid refreences etc.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
AJKConceptsAuthor Commented:
I have VB installed on my computer, not on the production web server.

Here is the error log from the dependency walker run on my gocar.dll:
Error: Modules with different CPU types were found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

When I run dependency walker on the dwmpai.dll, this is the result:

Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
Error: Modules with different CPU types were found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
AJKConceptsAuthor Commented:
Ok, I now know enough to know that a VB com object created for 32 bit Windows won't work on 64 bit. Do you happen to know how to create a 64 bit com object?
golfDoctorCommented:
Probably need VB.Net.
golfDoctorCommented:
AJKConceptsAuthor Commented:
I'm starting to seriously regret the decision to upgrade :(

Yes, looks like VB.net might be the way to go. I'll have to get it and try it. I'll let you know how that turns out.
golfDoctorCommented:
Yes, MS did not make the progession easy (makes them more money with software, training, etc).
kevp75Commented:
>>
I'm starting to seriously regret the decision to upgrade :(
<<

gotta love those MS freaks!
AJKConceptsAuthor Commented:
Thank you for your efforts! I have to rebuild my application using VB.net
:(
JSStephenzCommented:
Looks like you can enable 32 bit apps on IIS on 64 bit Windows:
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/405f5bb5-87a3-43d2-8138-54b75db73aa1.mspx?mfr=true

It advises to run :
cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 true
from c:\inetpub\adminscripts
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Web Components

From novice to tech pro — start learning today.