使用C#

时间:2019-04-23 16:45:25

标签: c# exchange-server exchangewebservices

我正在研究大约5年的旧代码,这些代码可以连接到AD,并检查登录用户是否是共享邮箱的一部分。

现有逻辑:

当前代码使用属性“ msExchMailboxSecurityDescriptor”将所有“ Trustee”附加到邮箱。然后,根据给定的用户ID检查此“受托人”值,以确定该用户是否有权访问该邮箱。

直到最近,一切正常。我认为Exchange Server安装程序中发生了某些更改,我无法访问或查看这些更改。

我的问题排成一行:

在C#中仍然可以检查用户是否有权访问共享邮箱?

发现:

  • 我已经选中了“ publicDelegates”和“ nTSecurityDescriptor” 属性,并且没有列出所有用户。

  • 我知道有一些PowerShell命令可以获取此信息,但这只是本地命令-对我没有用

  • 我相信有一些EWS方法可以连接到邮箱,但是还没有遇到用于检查邮箱用户访问权限的EWS方法的任何文档或样本。即使有EWS方法,我相信它也可以基于用户名和密码工作+我不确定是否需要在Exchange Server上启用某些功能才能使用EWS。

有关如何破解此问题的任何指示?

1 个答案:

答案 0 :(得分:0)

在扩展MAPI(C ++或Delphi)级别上,GAL提供程序公开了PR_EMS_AB_PUBLIC_DELEGATESPR_EMS_AB_PUBLIC_DELEGATES_BL列表,您可以将其作为IMAPITable打开。您可以在OutlookSpy中查看数据-单击IMAPISession按钮,QueryIdentity,然后转到PR_EMS_AB_PUBLIC_DELEGATES标签。

如果没有原始扩展选项,则可以使用Redemption及其RDOAddressEntryDelegatesIsDelegateFor属性。可以从RDOSessionRDOAddressEntry属性中检索CurrentUser