gpt4 book ai didi

c++ - 如何找出信息存储的可分辨名称以提供给 IExchangeManageStore::GetMailboxTable?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:01:41 25 4
gpt4 key购买 nike

有一个Microsoft knowledge base article使用示例代码打开给定信息存储中的所有邮箱。它目前有效(在比 VC++ 6.0 更新的编译器上需要一点 copy & pasting)。

在某一时刻,它使用信息存储的可分辨名称调用 IExchangeManageStore::GetMailboxTable。对于 Exchange 2007 试用虚拟服务器镜像,它必须如下所示:

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

使用 OutlookSpy然后单击 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();
}



更新:
EDK 5.5 source code 中有函数HrGetServerDN , 它从给定 session 的 PR_EMS_AB_HOME_MTA 中提取服务器 DN。如果其他方法不可靠,我会尝试。

关于c++ - 如何找出信息存储的可分辨名称以提供给 IExchangeManageStore::GetMailboxTable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/80831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com