Wie man den eindeutigen Namen des Informationsspeichers herauszufinden IExchangeManageStore :: GetMailboxTable zu füttern?

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

Frage

Es gibt eine Microsoft Knowledge Base-Artikel mit Beispielcode alle Postfächer in einem öffnen gegebene Informationsspeicher. Es funktioniert so weit (erfordert ein wenig Kopie & Einfügen auf Compiler neuen als VC ++ 6.0).

An einem Punkt ruft IExchangeManageStore :: GetMailboxTable mit dem eindeutigen Namen des Informationsspeichers. Für den Exchange-2007-Test Virtual Server Bild hat es wie folgt aussehen:

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

Mit OutlookSpy und klicken auf IMsgStore und IExchangeManageStore die gewünschte Zeichenfolge neben „Server DN zeigt: “.

Ich möchte zwingt den Benutzer zu vermeiden, dies in einer Konfigurationsdatei zu setzen. Also, wenn OutlookSpy es tun kann, wie kann meine Anwendung den eindeutigen Namen des Informationsspeichers herauszufinden, wo die aktuell geöffnete Mailbox ist?

War es hilfreich?

Lösung

Das Denken muss es eine reine MAPI-Lösung sein, ich glaube, ich habe herausgefunden, wie OutlookSpy es tut.
Der folgende Codeausschnitt eingefügt nach

printf("Created MAPI session\n");

Im Beispiel von KB194627 wird, zeigen die Server 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();
}


Update:
Es ist die Funktion HrGetServerDN in EDK 5.5 Quellcode , extrahiert sie die Server DN von einer bestimmten Sitzung des PR_EMS_AB_HOME_MTA . Ich werde es versuchen, wenn die andere Art und Weise als unzuverlässig herausstellt.

Andere Tipps

Es wird in Active Directory, so dass Sie ADSI / LDAP verwenden würde, bei CN = Microsoft Exchange zu suchen, CN = Services, CN = Configuration, DC = Beispiel , DC = com . Verwenden Sie Sysinternals' ADExplorer eine Grabung zu haben um dort in den Wert zu finden, die Sie suchen.

Ich würde die Quelle für MFCMapi herunterladen und sehen, wie sie dies tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top