2008-09-17 1 views
2

주어진 정보 저장소의 모든 사서함을 여는 예제 코드가있는 Microsoft knowledge base article이 있습니다. 지금까지 작동합니다 (VC++ 6.0보다 새로운 컴파일러에서는 copy & pasting이 필요합니다).IExchangeManageStore :: GetMailboxTable에 제공 할 정보 저장소의 고유 이름을 찾는 방법은 무엇입니까?

한순간에 정보 저장소의 고유 이름을 사용하여 IExchangeManageStore :: GetMailboxTable을 호출합니다. 은 Exchange 2007 평가판 가상 서버 이미지의 경우는 다음과 같이한다 :

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

OutlookSpy를 사용하고 IMsgStore에 클릭하고 IExchangeManageStore 원하는 문자열 옆에 계시 "서버 DN을".

나는 이것을 사용자가 설정 파일에 넣지 않도록하고 싶다. 따라서 OutlookSpy가이를 수행 할 수 있다면 내 응용 프로그램은 현재 열려있는 사서함이있는 정보 저장소의 고유 이름을 어떻게 찾을 수 있습니까? 당신이 CN = Microsoft Exchange CN = 서비스, CN = 구성, DC = 예를, DC보고 ADSI/LDAP를 사용하는 거라고, 그래서 = 닷컴

답변

2

순수 MAPI 솔루션이 있어야한다고 생각하면서 OutlookSpy가 어떻게 작동하는지 알아 냈습니다.


다음 코드는 서버 DN 표시됩니다, KB194627의 예에서

printf("Created MAPI session\n"); 

다음에 삽입.

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 source code에서 함수 HrGetServerDN
, 그것은 주어진 세션의 PR_EMS_AB_HOME_MTA에서 서버 DN을 추출합니다. 나는 다른 방법으로 신뢰할 수 없다는 것을 알면 그것을 시도 할 것입니다.

0

그것은, Active Directory에 있습니다. Sysinternals의 ADExplorer를 사용하면 찾고있는 가치를 찾을 수 있습니다.

0

나는 MFCMapi의 소스를 다운로드하고 어떻게하는지보고 싶다.

관련 문제