I've had to move a classic ASP application from windows server 2008 to Windows Server 2012R2 and the app uses a com object called (aspmail 4.0) from a company called ServerObjects - which is no longer in business (at least there's no way to contact them).
Anyway, I've registered the DLL (
C:\Windows\SysWOW64\regsvr32.exe d:\components\aspmail4\smtpsvg.dll), that works as I checked the registry (it's 100% installed no issues nor errors).
I've verified the DLL is correct and the registry is pointing to the correct path (and that there is only 1 path).
I've given every permission I can think of (even tested it with the "Everyone" account) to the DLL file (and IUSR account).
With 32bit disabled in the app pool, I get the "
ActiveX component can't create object." error.
With 32bit enabled in the app pool, it just crashes the page (generates a fatal exception) with an error in the event log as follows:
Faulting application name: w3wp.exe, version: 8.5.9600.16384, time stamp: 0x52157ba0 Faulting module name: smtpsvg.dll, version: 22.214.171.124, time stamp: 0x2a425e19 Exception code: 0xc0000005 Fault offset: 0x0004e001 Faulting process id: 0x3f0 Faulting application start time: 0x01cfe5f2dc426b4d Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe Faulting module path: d:\components\aspmail4\smtpsvg.dll Report Id: 3dd63a38-51e6-11e4-80da-0cc47a302001 Faulting package full name: Faulting package-relative application ID:
Is there some undocumented setting I'm missing? I've gone to dozens of forums and followed everything to the letter, but nothing works (8 hrs now, hair is almost completely pulled out).
So I've actually come across this issue myself while migrating some old sites to Windows Server 2012 server and it appeared to be because of a dependency on
cdonts.dll which was also known as Collaboration Data Objects for NTS (CDONTS) and was superseded sometime ago by Collaboration Data objects for Windows 2000 (CDOSYS).
Unfortunately, the legacy code I was migrating including references to
Dim cdo: Set cdo = Server.CreateObject("CDONTS.NewMail")
which would cause the error
ActiveX component can't create object
Instead of writing the code, after a little research found it would be easier to just migrate the 32-bit DLL
cdonts.dll from the old server to the new one and see if I can register it with the system, here are the steps.
%SystemRoot%\System32on the old server.
Copied the DLL to the new server
This would require some forethought. If the server was a running a 64-bit version of the OS the file would need to be copied into
with the other 32-bit subsystem DLLs, otherwise, if it was a 32-bit OS it would need to be copied into
It's worth noting that the DLL can reside anyway as long as the correct
regsvr32.exeis used, but for the sake of keeping things tidy followed this workflow.
Use the correct subsystem version of
regsvr32.exe to register the DLL. In this case, it was a 64-bit server so needed to register the DLL using
regsvr32 in the 32-bit subsystem folder.
Test the application. Found that the error had gone and the script worked as expecting using the legacy component.
C:\>cd %systemroot%\syswow64 C:\Windows\SysWow64\>regsvr32 cdonts.dll
Link that helped me: How to Use CDONTS.DLL on Windows Server 2012 R2
User contributions licensed under CC BY-SA 3.0