Hmm, weird. Can you check that all of the COM registrations made it to the
right parts of the registry? I want to distinguish whether your problem has
to do with IIS or COM registration weirdness involving WOW64.
You should be able to reproduce your situation outside of ASP by creating a
simple script on the commandline like:
-- Test.js contents ---
var obj = new ActiveXObject( "YourComponent.ProgId" );
And running it from a 64bit CMD shell window (default behavior). If the
problem is just with COM registration, this should fail just like it does in
your ASP page.
And if you run this script from a 32bit CMD shell window, using "start
%SYSTEMROOT%\SYSWOW64\CMD.EXE" from any commandline, it should work just
like in your VB App.
If this is what you see, then the issue has nothing to do with IIS and
everything to do with the registration of your component... and at this
point, we need to start digging around in the registry. It now becomes VERY
important the bitness of the tools/commands that you run -- you cannot
substitute bitness unless you know it has no effect on what you're looking
at.
What I first want to know is where all DLLs related to the component are
located. Are they inside the System32 directory or not?
--
//David
IIS
This posting is provided "AS IS" with no warranties, and confers no rights.
//
"David Hood" <david_hood DeleteThis @hotmail.com> wrote in message
news:60eec15e.0404261004.613936ea@posting.google.com...
Thanks for your reply David. I appreciate that the problem isn't so
much to do with IIS but your replies in this forum were the only place
I seemed to be able to find any information on the subject.
From the 64 bit Windows documentation I gather the following...
C:\Windows\SysWow64 contains a 32 bit version of regsvr32.exe
C:\Windows\System32 contains a 64 bit version of regsvr32.exe
Just to be sure the component was registered using both the 32 bit
regsrv32.exe program and the 64 bit regsvr32.exe program.
Before the 64 bit registration the error reported was
ASP 0177: COM Error 0x800401f3: This error code means 'Not
registered'
After the 64 bit registration the error reported was
COM Error 0x800a01ad: This error code means 'Not all components are
accessible'
Once the 32bit COM component is loaded into DLLHOST.EXE it is then a
32 bit application which may need to load other 32 bit components.
However this should not be a problem as the 32 bit VB application that
does the same thing as the ASP page works fine. The ASP page error
occurs at the point when it tries to load the first 32 bit component.
Is there some sort of ASP setting which enables out of process 32 bit
components perhaps?
David
"David Wang [Msft]" <someone DeleteThis @online.microsoft.com> wrote in message
news:<#4Az2tXKEHA.3184@TK2MSFTNGP10.phx.gbl>...
> Welcome to WOW64. You have to be aware of all the rules, or else behavior
> will look very strange. All of this has NOTHING to do with IIS -- it
> applies generically to all processes on Windows. IIS is just another
> process.
>
> COM component registration exists in two locations, one for 64bit
processes
> and one for 32bit processes. Where a registration goes depends on the
> bitness of the process that does the registration. If the registration is
> done by a 32bit process, like some existing x86 setup.exe, then it is only
> going to exist in the 32bit location. If the registration is done by a
> 64bit process, it will exist in the 64bit location and be mirrored to the
> 32bit location.
>
> Thus, it is possible to register a COM component on a 64bit OS and have it
> only available to 32bit process (like VB) but not 64bit process (like
> ASP.DLL interpreting ASP pages).
>
> Therefore, I have to ask how you registered this COM component -- because
if
> you just ran the x86 setup program, it's likely to only exist for 32bit
> processes like VB -- ASP runs as a 64bit process, so it's not going to see
> that component unless you register it in 64bit as well -- and this
explains
> your observation.
>
> --
> //David
> IIS<!-- ~MESSAGE_AFTER~ -->
>> Stay informed about: Accessing 32 bit COM components in 64 bit IIS