Registrar dll en windows 2003 server 64 bits

21/04/2006 - 13:43 por Felipe | Informe spam
Hola,

Como se puede registrar una dll en un equipo Windows server 2003 Standard
x64 Edition?
He probado con regsvr32 pero no funciona.

gracias

Preguntas similare

Leer las respuestas

#1 Ramón Sola [MVP Windows - Shell/User]
22/04/2006 - 07:26 | Informe spam
Hash: SHA1

¿La DLL es de 32 bits o de 64 bits? Si la DLL es de 32 bits, deberás
ejecutar el Regsvr32.exe de \Windows\Syswow64, no el de \Windows\System32.
Parece contradictorio y fuera de todo razonamiento cabal pero, en las
ediciones de 64 bits, System32 aloja ficheros de 64 bits mientras que
Syswow64 aloja ficheros de 32 bits. También contribuye a la confusión el
hecho de que los dos programas se llamen Regsvr32.exe.

Más información:
Error Message When You Run Regsvr32.exe on 64-Bit Windows
http://support.microsoft.com/kb/282747/en-us

Ramón Sola / / MVP Windows - Shell/User
Para obtener la dirección correcta no hacen falta los sellos.
Por favor, usar el correo sólo para cuestiones ajenas a los
grupos de noticias, gracias.

Qué hay, Felipe (), tú escribiste:
Hola,

Como se puede registrar una dll en un equipo Windows server 2003 Standard
x64 Edition?
He probado con regsvr32 pero no funciona.

gracias

Respuesta Responder a este mensaje
#2 Felipe
25/04/2006 - 12:43 | Informe spam
Gracias por la respuesta. Me ha dejado así registrarla, pero me ha surgido
otro problema...

Cuando intento desde una página ASP crear una instancia del objeto qu acabo
de instalar en el servidor, me aparece el siguiente error:

Error de Microsoft VBScript en tiempo de ejecución error '800a01ad'

El componente ActiveX no puede crear el objeto


He consultado en la Knowlwdge Base de Microsoft y he comprobado las posibles
causas de este error, pero todo está correcto (DLL registrada, la ruta donde
se encuentra está puesta en el path, no tiene dependencias con otras dll's,
he comprobado permisos, etc...)

Recuerdo que se trata de un Windows Server 2003 64 bits y creo que los
problemas pueden derivar de aquí.

gracias

"Ramón Sola [MVP Windows - Shell/User]" escribió:

Hash: SHA1

¿La DLL es de 32 bits o de 64 bits? Si la DLL es de 32 bits, deberás
ejecutar el Regsvr32.exe de \Windows\Syswow64, no el de \Windows\System32.
Parece contradictorio y fuera de todo razonamiento cabal pero, en las
ediciones de 64 bits, System32 aloja ficheros de 64 bits mientras que
Syswow64 aloja ficheros de 32 bits. También contribuye a la confusión el
hecho de que los dos programas se llamen Regsvr32.exe.

Más información:
Error Message When You Run Regsvr32.exe on 64-Bit Windows
http://support.microsoft.com/kb/282747/en-us

Ramón Sola / / MVP Windows - Shell/User
Para obtener la dirección correcta no hacen falta los sellos.
Por favor, usar el correo sólo para cuestiones ajenas a los
grupos de noticias, gracias.

Qué hay, Felipe (), tú escribiste:
> Hola,
>
> Como se puede registrar una dll en un equipo Windows server 2003 Standard
> x64 Edition?
> He probado con regsvr32 pero no funciona.
>
> gracias



Respuesta Responder a este mensaje
#3 Ramón Sola [MVP Windows - Shell/User]
27/04/2006 - 04:13 | Informe spam
Hash: SHA1

La DLL sólo está registrada para los procesos de 32 bits, por tanto los de
64 bits no tienen conocimiento de ella. Aunque supieran de su existencia,
no podrían cargar la DLL puesto que tiene un "número de bits" diferente.

IIS es un proceso de 64 bits. Por defecto, IIS crea procesos auxiliares de
64 bits para satisfacer las peticiones de los clientes. En alguno de estos
procesos está cargado el intérprete de ASP, una DLL también de 64 bits.
Ahora, el intérprete de ASP intenta crear una instancia del objeto. Error:
No está registrado. (La causa habitual del código 0x800A01AD o error 429 de
automatización, "el componente ActiveX no puede crear el objeto", es que el
componente no está registrado. Sin embargo, puede aparecer por otros
motivos.)

Afortunadamente, uno de los cambios del SP1 de Windows Server 2003
(incluidos en las ediciones x64) es que se puede activar en IIS un modo de
compatibilidad de 32 bits. Esto significa que IIS podrá utilizar
extensiones y filtros ISAPI de 32 bits, así como otros módulos de 32 bits
de los que éstos puedan depender (p.ej.: componentes basados en COM). Sin
embargo, IIS fallará en modo de 32 bits si intenta cargar algún módulo de
64 bits.

El artículo 895976 de la Knowledge Base documenta este modo de
funcionamiento que se puede activar así:
CSCRIPT ADSUTIL.VBS SET W3SVC/AppPools/Enable32bitAppOnWin64 1
(Para volver al modo nativo de 64 bits, poner 0 en lugar de 1.)
Tal vez haya que reiniciar el servicio IIS para que el cambio tenga efecto.
No estoy seguro.

De todas maneras, la mejor solución, que no siempre es factible, consiste
en adaptar la DLL a la arquitectura x64.

Más información:

Windows Server 2003 SP1 enables WOW64 compatibility for 32-bit Web
applications in IIS 6.0
http://support.microsoft.com/kb/895976/en-us

Ramón Sola / / MVP Windows - Shell/User
Para obtener la dirección correcta no hacen falta los sellos.
Por favor, usar el correo sólo para cuestiones ajenas a los
grupos de noticias, gracias.

Felipe () va y dice:
Gracias por la respuesta. Me ha dejado así registrarla, pero me ha
surgido otro problema...

Cuando intento desde una página ASP crear una instancia del objeto qu
acabo de instalar en el servidor, me aparece el siguiente error:

Error de Microsoft VBScript en tiempo de ejecución error '800a01ad'

El componente ActiveX no puede crear el objeto


He consultado en la Knowlwdge Base de Microsoft y he comprobado las
posibles causas de este error, pero todo está correcto (DLL registrada,
la ruta donde se encuentra está puesta en el path, no tiene dependencias
con otras dll's, he comprobado permisos, etc...)

Recuerdo que se trata de un Windows Server 2003 64 bits y creo que los
problemas pueden derivar de aquí.

gracias


Respuesta Responder a este mensaje
#4 Felipe
27/04/2006 - 16:45 | Informe spam
Gracias de nuevo por tu respuestaHe probado lo que me comentas, pero me
surge otro problema: Que cuando activo Enable32bitAppOnWin64 a 1 el servicio
de web deja de funcionar. Tendría que modificar algún parámetro más?

gracias

"Ramón Sola [MVP Windows - Shell/User]" escribió:

Hash: SHA1

La DLL sólo está registrada para los procesos de 32 bits, por tanto los de
64 bits no tienen conocimiento de ella. Aunque supieran de su existencia,
no podrían cargar la DLL puesto que tiene un "número de bits" diferente.

IIS es un proceso de 64 bits. Por defecto, IIS crea procesos auxiliares de
64 bits para satisfacer las peticiones de los clientes. En alguno de estos
procesos está cargado el intérprete de ASP, una DLL también de 64 bits.
Ahora, el intérprete de ASP intenta crear una instancia del objeto. Error:
No está registrado. (La causa habitual del código 0x800A01AD o error 429 de
automatización, "el componente ActiveX no puede crear el objeto", es que el
componente no está registrado. Sin embargo, puede aparecer por otros
motivos.)

Afortunadamente, uno de los cambios del SP1 de Windows Server 2003
(incluidos en las ediciones x64) es que se puede activar en IIS un modo de
compatibilidad de 32 bits. Esto significa que IIS podrá utilizar
extensiones y filtros ISAPI de 32 bits, así como otros módulos de 32 bits
de los que éstos puedan depender (p.ej.: componentes basados en COM). Sin
embargo, IIS fallará en modo de 32 bits si intenta cargar algún módulo de
64 bits.

El artículo 895976 de la Knowledge Base documenta este modo de
funcionamiento que se puede activar así:
CSCRIPT ADSUTIL.VBS SET W3SVC/AppPools/Enable32bitAppOnWin64 1
(Para volver al modo nativo de 64 bits, poner 0 en lugar de 1.)
Tal vez haya que reiniciar el servicio IIS para que el cambio tenga efecto.
No estoy seguro.

De todas maneras, la mejor solución, que no siempre es factible, consiste
en adaptar la DLL a la arquitectura x64.

Más información:

Windows Server 2003 SP1 enables WOW64 compatibility for 32-bit Web
applications in IIS 6.0
http://support.microsoft.com/kb/895976/en-us

Ramón Sola / / MVP Windows - Shell/User
Para obtener la dirección correcta no hacen falta los sellos.
Por favor, usar el correo sólo para cuestiones ajenas a los
grupos de noticias, gracias.

Felipe () va y dice:
> Gracias por la respuesta. Me ha dejado así registrarla, pero me ha
> surgido otro problema...
>
> Cuando intento desde una página ASP crear una instancia del objeto qu
> acabo de instalar en el servidor, me aparece el siguiente error:
>
> Error de Microsoft VBScript en tiempo de ejecución error '800a01ad'
>
> El componente ActiveX no puede crear el objeto
>
>
> He consultado en la Knowlwdge Base de Microsoft y he comprobado las
> posibles causas de este error, pero todo está correcto (DLL registrada,
> la ruta donde se encuentra está puesta en el path, no tiene dependencias
> con otras dll's, he comprobado permisos, etc...)
>
> Recuerdo que se trata de un Windows Server 2003 64 bits y creo que los
> problemas pueden derivar de aquí.
>
> gracias
>



Respuesta Responder a este mensaje
#5 Ramón Sola [MVP Windows - Shell/User]
28/04/2006 - 06:18 | Informe spam
Hash: SHA1

Probablemente está intentando cargar algún filtro o extensión ISAPI de 64
bits en modo de 32 bits, una acción que no está permitida. Quizá encuentres
más información en los registros de sucesos.

Ramón Sola / / MVP Windows - Shell/User
Para obtener la dirección correcta no hacen falta los sellos.
Por favor, usar el correo sólo para cuestiones ajenas a los
grupos de noticias, gracias.

Felipe () va y dice:
Gracias de nuevo por tu respuestaHe probado lo que me comentas, pero
me surge otro problema: Que cuando activo Enable32bitAppOnWin64 a 1 el
servicio de web deja de funcionar. Tendría que modificar algún parámetro
más?

gracias

"Ramón Sola [MVP Windows - Shell/User]" escribió:

> La DLL sólo está registrada para los procesos de 32 bits, por tanto
> los de 64 bits no tienen conocimiento de ella. Aunque supieran de su
> existencia, no podrían cargar la DLL puesto que tiene un "número de
> bits" diferente.
>
> IIS es un proceso de 64 bits. Por defecto, IIS crea procesos
> auxiliares de 64 bits para satisfacer las peticiones de los clientes.
> En alguno de estos procesos está cargado el intérprete de ASP, una DLL
> también de 64 bits. Ahora, el intérprete de ASP intenta crear una
> instancia del objeto. Error: No está registrado. (La causa habitual
> del código 0x800A01AD o error 429 de automatización, "el componente
> ActiveX no puede crear el objeto", es que el componente no está
> registrado. Sin embargo, puede aparecer por otros motivos.)
>
> Afortunadamente, uno de los cambios del SP1 de Windows Server 2003
> (incluidos en las ediciones x64) es que se puede activar en IIS un
> modo de compatibilidad de 32 bits. Esto significa que IIS podrá
> utilizar extensiones y filtros ISAPI de 32 bits, así como otros
> módulos de 32 bits de los que éstos puedan depender (p.ej.:
> componentes basados en COM). Sin embargo, IIS fallará en modo de 32
> bits si intenta cargar algún módulo de 64 bits.
>
> El artículo 895976 de la Knowledge Base documenta este modo de
> funcionamiento que se puede activar así:
> CSCRIPT ADSUTIL.VBS SET W3SVC/AppPools/Enable32bitAppOnWin64 1
> (Para volver al modo nativo de 64 bits, poner 0 en lugar de 1.)
> Tal vez haya que reiniciar el servicio IIS para que el cambio tenga
> efecto. No estoy seguro.
>
> De todas maneras, la mejor solución, que no siempre es factible,
> consiste en adaptar la DLL a la arquitectura x64.
>
> Más información:
>
> Windows Server 2003 SP1 enables WOW64 compatibility for 32-bit Web
> applications in IIS 6.0
> http://support.microsoft.com/kb/895976/en-us
>

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida