Как узнать различимое имя хранилища информации для отправки в IExchangeManageStore::GetMailboxTable?

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

Вопрос

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

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

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

Используя Дальновидный шпион и нажатие на IMsgStore и IExchangeManageStore показывает нужную строку рядом с "DN сервера:".

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

Это было полезно?

Решение

Думая, что должно быть чистое решение 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();
}



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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top