Compartir a través de


Elegir una versión específica de MAPI para cargar

Hace referencia a: Outlook 2013 | Outlook 2016

Al vincular explícitamente a una implementación de MAPI, debe seleccionar cuidadosamente qué implementación cargar.

Hay dos métodos para vincular explícitamente a una implementación de MAPI.

  1. Cargue la biblioteca de código auxiliar MAPI y especifique en el Registro un archivo DLL personalizado al que cargar y enviar llamadas MAPI. O bien

  2. Implemente el algoritmo de búsqueda de cliente MAPI para buscar la versión de MAPI usada por el cliente de correo predeterminado y cargarla.

Dado que puede cambiar la configuración del Registro de código auxiliar deMapi32.dll para que la aplicación use cualquier implementación de MAPI, se recomienda que dirija a la aplicación para que use una implementación de MAPI con la que ha probado. A continuación se describen ambos métodos de vinculación explícitamente.

Leer la información de implementación mapi del registro

  1. Las claves del Registro que indican un archivo DLL personalizado para un cliente de correo se encuentran bajo la HKLM\Software\Clients\Mail clave del cliente de correo.

    En la tabla siguiente se describen estas claves:

    Clave Descripción
    MSIComponentID
    Un identificador de categoría PublishComponent (GUID) de Windows Installer que identifica el archivo DLL que exporta llamadas MAPI o MAPI simples. Si se establece, esta clave tiene prioridad sobre la clave DLLPath o DLLPathEx .
    MSIApplicationLCID
    Identificador de configuración regional (LCID) de la aplicación. El primer valor de cadena identifica una subclase de y los valores de HKLM\Software cadena subsiguientes identifican los valores del Registro debajo de esta clave que contienen información de configuración regional.
    MSIOfficeLCID
    LCID para Microsoft Office. El primer valor de cadena identifica una subclase de y los valores de HKLM\Software cadena subsiguientes identifican los valores del Registro debajo de esta clave.

    Obtenga la información de estas claves.

  2. Pase los valores que obtuvo del paso anterior a la función FGetComponentPath . FGetComponentPath es una función exportada por la biblioteca de código auxiliar MAPI Mapistub.dll. Devuelve la ruta de acceso de la versión personalizada de MAPI.

Carga de la implementación de MAPI marcada como predeterminada

  1. Lea el valor del HKLM\Software\Clients\Mail::(default) Registro.

  2. Busque la información del cliente indicado como se describió anteriormente.

Nota:

Tenga en cuenta que es posible que el cliente de correo predeterminado no implemente MAPI extendido.

Ejemplo

Para cargar MAPI tal como lo implementa Outlook, busque las claves del Registro en HKLM\Software\Clients\Mail\Microsoft Outlook y páselas a FGetComponentPath. FGetComponentPath devolverá la ruta de acceso para la implementación de MAPI de Outlook.

Si las claves MSIComponentID, MSIApplicationLCID y MSIOfficeLCID no están establecidas, compruebe el valor del Registro DLLPathEx . Si se establecen las claves, FGetComponentPath proporciona la ruta de acceso de la implementación del cliente de MAPI.

Implementación del algoritmo de búsqueda de cliente MAPI

En la tabla siguiente se enumeran las cuatro funciones de MFCMAPI que se usan para buscar la ruta de acceso para una implementación personalizada de MAPI:

Función Descripción
GetMAPIPath
Obtiene la ruta de acceso de la biblioteca MAPI.
GetMailKey
Obtiene la clave del Registro de correo MAPI.
GetMapiMsiIds
Obtiene el identificador de Windows Installer.
GetComponentPath
Obtiene la ruta de acceso del componente mediante FGetComponentPath.

Dado que MFCMAPI carga la implementación predeterminada de MAPI de forma predeterminada, si desea usar una implementación diferente de MAPI, debe dirigirla explícitamente para hacerlo. Esto se realiza mediante la rutina Session\Load MAPI .

Funcionamiento de estas funciones

  1. MFCMAPI llama a GetMAPIPath, pasando NULL para el parámetro de cliente, para cargar la implementación mapi predeterminada.

  2. GetMAPIPath llama GetMapiMsiIds a para leer los valores de MSIComponentID, MSIApplicationLCID y MSIOfficeLCID.

  3. GetMapiMsiIds llama GetMailKey a para abrir la clave del Registro para el cliente de correo predeterminado.

  4. GetMapiMsiIds usa el identificador del Registro devuelto por GetMailKey para buscar valores para MSIComponentID, MSIApplicationLCID y MSIOfficeLCID.

  5. Los valores de MSIComponentID, MSIApplicationLCID y MSIOfficeLCID se devuelven a GetMAPIPath. GetMAPIPath a continuación, los pasa a GetComponentPath.

  6. GetComponentPath carga la biblioteca de código auxiliar MAPI, Mapi32.dll, desde el directorio del sistema.

  7. GetComponentPath a continuación, recupera la dirección de la función FGetComponentPath de Mapi32.dll, suponiendo que Mapi32.dll exporta FGetComponentPath.

  8. Si se produce un error al obtener la dirección de FGetComponentPath de Mapi32.dll, GetComponentPath recupera la dirección de Mapistub.dll.

  9. GetComponentPath a continuación, llama a FGetComponentPath y obtiene la ruta de acceso de la versión predeterminada de MAPI.

  10. GetMAPIPath a continuación, devuelve esta ruta de acceso al autor de la llamada, que, a continuación, carga MAPI y se vincula explícitamente a ella como se describe en Vínculo a funciones MAPI.

Nota:

  • Para admitir copias localizadas de MAPI para configuraciones regionales en inglés y no inglés, GetMAPIPath lee los valores de las subclaves MSIApplicationLCID y MSIOfficeLCID . GetMAPIPath a continuación, llama a FGetComponentPath, especificando primero MSIApplicationLCID como szQualifier y, de nuevo, especificando MSIOfficeLCID como szQualifier. Para obtener más información sobre las claves del Registro para los clientes de correo que admiten idiomas que no son en inglés, vea Configurar las claves MSI para el archivo DLL MAPI.
  • Si MFCMAPI no recibe una ruta de acceso para MAPI mediante GetMAPIPath, carga la biblioteca de códigos auxiliares MAPI desde el directorio del sistema.
  • El valor del Registro MSMapiApps descrito en Asignación explícita de llamadas MAPI a archivos DLL MAPI solo se aplica cuando se usa la biblioteca de códigos auxiliares MAPI. Las aplicaciones que cargan una implementación específica de MAPI o cargan la implementación predeterminada no tienen que establecer la clave del Registro MSMapiApps .

Vea también