C#从Exchange获取详细的委托信息

时间:2018-09-17 21:53:56

标签: c# active-directory exchangewebservices directoryservices

我正在尝试获取对某些用户的日历具有编辑或作者权限的代表列表。我尝试使用Exchange Web服务(EWS)API,但似乎没有正确级别的权限来查询。这是我正在使用的代码:

ExchangeService service = new ExchangeService();
service.UseDefaultCredentials = true;
service.Url = new Uri("https://mailurl/Exchange.asmx");

Mailbox mailbox = new Mailbox("some_user@some_domain.com");
var result = service.GetDelegates(mailbox, true);

上面的代码导致以下异常,我猜这是与权限相关的:“在商店中找不到指定的对象。”

作为替代,然后我尝试使用System.DirectoryServices命名空间(DirectoryEntry,DirectorySearcher和FindOne方法)来查询Active Directory(AD),以获取给定用户的委托列表。我找到了 publicdelegates 属性,但这似乎为我提供了所有委托人名称的列表,并且不包含有关每个委托人具有的特定权限级别的任何其他信息。我希望只获得具有编辑或作者权限的代表列表。

有什么建议吗?提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用Exchange命令行管理程序和Get-MailboxFolderPermission https://docs.microsoft.com/en-us/powershell/module/exchange/mailboxes/get-mailboxfolderpermission?view=exchange-ps,这将允许您仅获取在Calendar Folder本身上设置的权限。使用上述委托的问题在于,这将仅捕获Outlook委托,但用户或管理员仍可能向用户明确授予文件夹权限。要从托管代码运行以上代码,您只需要类似https://docs.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/ff326159(v%3Dexchg.140)

相关问题