Думая, что должно быть чистое решение 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 данного сеанса. Я попробую, если другой способ окажется ненадежным.