Como acceder a una DLL de 32 bits desde una aplicación de 64 bits

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.

Contestar