Estoy trabajando en una máquina con Windows de 64 bits, creando un script (wcript.exe, 64 bits) que tiene que referenciar a una DLL de 32 bits.
La DLL está bien registrada con C:\windows\syswow64\regsvr32.exe pero produce un error al referenciarla.
Tras mucho buscar, encontré esta solución de Emmanuel Carabott que podéis encontrar en su forma original aquí.
Me limito a traducirla y a aseguraros que funciona.
- Ejecuta regedit
- Localiza el GUID del objeto COM de 32 bits al que quieres acceder desde la aplicación de 64 (busca el nombre de la dll, por ejemplo) en HKey_Classes_Root\Wow6432Node\CLSID\[GUID]
- Una vez localizado, añade en la clave un nuevo valor de tipo REG_SZ (cadena). El nombre debe ser AppID y el valor el GUID localizado antes.
- Añade una nueva clave en HKey_Classes_Root\Wow6432Node\AppID y asígnale el GUID localizado antes como nombre.
- En la clave que acabas de crear, añade un nuevo valor de tipo REG_SZ (cadena), y llámalo DllSurrogate. Deja el valor en blanco.
- Por último, crea (si es que no está ya creada) una clave nueva en HKey_Local_Machine\Software\Classes\AppID. Nuevamente, la clave tendrá como nombre el GUID localizado. No es necesario que añadas ningún valor en esta clave.
Una vez hecho esto podrás hacer la llamada a la DLL de 32 bits desde la aplicación de 64 bits.