2008-09-17 4 views
2

Il existe un Microsoft knowledge base article avec un exemple de code pour ouvrir toutes les boîtes aux lettres dans une banque d'informations donnée. Cela fonctionne jusqu'à présent (nécessite un peu de copy & pasting sur les compilateurs plus récents que VC++ 6.0). À un moment donné, il appelle IExchangeManageStore :: GetMailboxTable avec le nom distinctif de la banque d'informations.Comment trouver le nom distinctif de la banque d'informations à alimenter IExchangeManageStore :: GetMailboxTable?

Pour l'image d'essai Exchange 2007 Virtual Server, il doit ressembler à ceci:

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

En utilisant OutlookSpy et en cliquant sur IMsgStore et IExchangeManageStore révèle la chaîne désirée à côté de « serveur DN: ».

Je veux éviter de forcer l'utilisateur à mettre cela dans un fichier de configuration. Donc, si OutlookSpy peut le faire, comment mon application peut-elle trouver le nom distinctif de la banque d'informations sur laquelle se trouve la boîte aux lettres actuellement ouverte?

Répondre

2

Penser qu'il doit y avoir une solution MAPI pure, je crois que j'ai compris comment OutlookSpy le fait.


L'extrait de code suivant, inséré après

printf("Created MAPI session\n"); 

dans l'exemple de KB194627, affiche le serveur 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(); 
} 



Mise à jour:
Il y a la fonction HrGetServerDN dans le EDK 5.5 source code, il extrait le serveur DN de PR_EMS_AB_HOME_MTA d'une session donnée. Je vais essayer si l'autre sens s'avère peu fiable.

0

Ce sera dans Active Directory, donc vous devriez utiliser ADSI/LDAP pour regarder CN = Microsoft Exchange, CN = Services, CN = Configuration, DC = exemple, DC = com . Utilisez ADEXplorer de Sysinternals pour avoir un aperçu de la valeur que vous recherchez.

0

Je télécharger la source pour MFCMapi et voir comment ils font cela.

Questions connexes