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를 클릭하면 "Server 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=를 확인합니다.,DC=com.Sysinternals의 ADExplorer를 사용하여 원하는 값을 찾아보세요.

MFCMapi의 소스를 다운로드하고 이것이 어떻게 수행되는지 살펴보겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top