sistemas - ¿Pueden mis componentes COM de 32 bits y 64 bits co-residir en la misma máquina?
sistema operativo de 64 bits (1)
Tengo un componente COM de 32 bits que es utilizado principalmente por ASP, también tenemos la versión de 64 bits.
La versión de 64 bits es funcionalmente idéntica y también usa el mismo ProgID (y, por lo que sé, el mismo CLSID, etc.).
¿Puedo instalar / registrar la versión de 64 bits en la misma máquina que la versión de 32 bits (obviamente en una carpeta diferente) y hacer que mis aplicaciones existentes de 32 bits continúen utilizando el componente de 32 bits, mientras que mis 64 bits consumen la versión de 64 bits? ?
Estos son componentes de código nativo escritos en C ++ y no en .NET.
Esto debería ser posible.
En las ventanas de 64 bits, el registro y el sistema de archivos se redirige para las aplicaciones de 32 bits. El registro para los dll COM de 32 bits estará en una ubicación separada en el registro (HKLM / Software / Wow6432Node / Classes), y sus componentes COM deberían residir en carpetas separadas, 64 bits en Archivos de programa y 32 bits en Archivos de programa (x86) La redirección de registro / archivo para aplicaciones de 32 bits debería hacer que esto funcione de forma transparente.
Es posible que el componente mismo pueda evitar esto, por ejemplo, si crea recursos globales que terminarían en conflicto entre las versiones de 32 bits y 64 bits.
Esta situación ya existe en Windows de 64 bits. En mi sistema de 64 bits tengo:
HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Classes / CLSID {8856F961-340A-11D0-A96B-00C04FD705A2} / InProcServer32 / Default = C: / Windows / SysWow64 / ieframe.dll
Y
HKEY_CLASSES_ROOT / CLSID {8856F961-340A-11D0-A96B-00C04FD705A2} / InProcServer32 / Default = C: / Windows / System32 / ieframe.dll
Versión de 32 bits y 64 bits del control WebBrowser en el mismo sistema.