Cómo averiguar el nombre completo de la información de la tienda para alimentar a IExchangeManageStore::GetMailboxTable?

StackOverflow https://stackoverflow.com/questions/80831

Pregunta

Hay un Artículo de Microsoft knowledge base con el código de ejemplo para abrir todos los buzones de correo en un determinado almacén de información.Funciona hasta el momento (se requiere un poco de copiar y pegar en los compiladores más reciente que VC++ 6.0).

A un punto se llama IExchangeManageStore::GetMailboxTable con el nombre completo de la información de la tienda.Para el Intercambio De 2007 de Prueba de imagen de Servidor Virtual tiene que tener este aspecto:

"/o=Litware Inc/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=servers/cn=DC1".

El uso de OutlookSpy y haciendo clic en IMsgStore y IExchangeManageStore revela la cadena deseada junto a "DN del Servidor:".

Quiero evitar forzar al usuario a poner esto en un archivo de configuración.Así que si OutlookSpy puede hacerlo, ¿cómo puede mi aplicación averiguar el nombre completo de la información de la tienda donde el abierto actualmente se encuentra en buzón?

¿Fue útil?

Solución

El pensamiento no debe ser un puro MAPI solución, creo que he encontrado la manera OutlookSpy hace.


El siguiente fragmento de código, se inserta después de

printf("Created MAPI session\n");

en el ejemplo de KB194627, mostrará los Servidor de DN.

LPPROFSECT lpProfSect;
hr = lpSess->OpenProfileSection((LPMAPIUID)pbGlobalProfileSectionGuid, NULL, 0, &lpProfSect);
if(SUCCEEDED(hr))
{
    LPSPropValue lpPropValue;
    hr = HrGetOneProp(lpProfSect, PR_PROFILE_HOME_SERVER_DN, &lpPropValue);
    if(SUCCEEDED(hr))
    {
        printf("Server DN: %s\n", lpPropValue->Value.lpszA);
        MAPIFreeBuffer(lpPropValue);
    }
    lpProfSect->Release();
}



Actualización:
No es la función HrGetServerDN en el EDK 5.5 código fuente, se extrae el Servidor de DN a partir de un determinado período de sesiones de la PR_EMS_AB_HOME_MTA.Yo voy a probar si la otra manera resulta ser poco fiables.

Otros consejos

Va a ser en Active Directory, así que vas a utilizar ADSI/LDAP para buscar en CN=Microsoft Exchange,CN=Servicios,CN=Configuration,DC=ejemplo,DC=com.El uso de Sysinternals' ADExplorer tener una cavar a su alrededor para encontrar el valor que estás buscando.

Me gustaría descargar el código fuente para MFCMapi y ver cómo hacer esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top