Как узнать отличительное имя банка данных для подачи в IExchangeManageStore :: GetMailboxTable? - PullRequest
2 голосов
/ 17 сентября 2008

Существует статья базы знаний Майкрософт с примером кода, чтобы открыть все почтовые ящики в данном хранилище информации. Пока это работает (требуется немного копирование и вставка на компиляторах, более новых, чем VC ++ 6.0).

В какой-то момент он вызывает IExchangeManageStore :: GetMailboxTable с характерным именем банка данных. Для образа пробного виртуального сервера Exchange 2007 он должен выглядеть следующим образом:

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

Использование OutlookSpy и нажатие на IMsgStore и IExchangeManageStore показывают желаемую строку рядом с «Server DN:».

Я хочу не заставлять пользователя помещать это в файл конфигурации. Так что, если OutlookSpy может это сделать, как мое приложение может узнать отличительное имя банка данных, в котором находится текущий открытый почтовый ящик?

Ответы [ 3 ]

2 голосов
/ 18 сентября 2008

Думая, что должно быть чистое решение MAPI, я думаю, я выяснил, как это делает OutlookSpy.


Следующий фрагмент кода, вставленный после

printf("Created MAPI session\n");

в примере из KB194627 , покажет 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();
}



Обновление:
В исходном коде EDK 5.5 есть функция HrGetServerDN , которая извлекает DN сервера из PR_EMS_AB_HOME_MTA данного сеанса. Я попробую, если другой способ окажется ненадежным.

0 голосов
/ 30 декабря 2008

Я бы скачал исходники для MFCMapi и посмотрел, как они это делают.

0 голосов
/ 17 сентября 2008

Это будет в Active Directory, поэтому вы должны использовать ADSI / LDAP для просмотра CN = Microsoft Exchange, CN = Службы, CN = Конфигурация, DC = Пример , DC = ком . Используйте ADExplorer от Sysinternals, чтобы покопаться там и найти нужное значение.

...