C# Microsoft Exchange:如何通过EWS获取广告域?

C# Microsoft Exchange:如何通过EWS获取广告域?,c#,active-directory,exchangewebservices,C#,Active Directory,Exchangewebservices,我得到了一个Exchange电子邮件地址,我必须用该电子邮件地址获取用户的广告条目 只要我只有一个GC,就可以使用DirectoryEntry: DirectorySearcher searcher = new DirectorySearcher(new DirectoryEntry("GC:")); searcher.Filter = string.Format("{0}={1}","mail","alexander@contoso.com"); DirectoryEntry entry =

我得到了一个Exchange电子邮件地址,我必须用该电子邮件地址获取用户的广告条目

只要我只有一个GC,就可以使用DirectoryEntry:

DirectorySearcher searcher = new DirectorySearcher(new DirectoryEntry("GC:"));
searcher.Filter = string.Format("{0}={1}","mail","alexander@contoso.com");
DirectoryEntry entry = searcher.FindOne().GetDirectoryEntry();
但是,如果我有多个受信任的GC,并且查询AD的用户与查询的用户位于不同的GC中,在全局目录中找不到该对象,因为我没有提供要搜索的AD域

因此,我要么查询所有GC(我能在GC中找到所有受信任的GC吗?),要么使用EWS获取DirectoryEntry


这两种可能性中哪一种可行?

我不太明白你的意思:

但如果我有多个受信任的GCs,并且查询AD的用户 与查询的用户位于不同的GC中,找不到该对象 在全局目录中,因为我没有向 搜索

GC仅在其自己的林中包含对象。
通过查询forest2中的GC,无法找到位于forest1中的用户

指定要使用的GC

DirectorySearcher searcher = new DirectorySearcher(
    new DirectoryEntry("GC://forest1.net/"));
如果当前用户没有从该林读取的权限,则可能需要提供另一个用户的凭据:

DirectorySearcher searcher = new DirectorySearcher(
    new DirectoryEntry("GC://forest1.net/", "user", "password"));

如何从邮件地址获取
forest1.net
?我不能假设所有邮件地址
xy@forest1.net
位于ActiveDirectory域
forest1.net
,因为它们将被移动到
forest2.com
,但将保留它们原来的
@forest1.net
电子邮件地址。这就是它变得讨厌的地方…如果你只有电子邮件地址,通过广告,恐怕你必须在每个森林中搜索一个GC。但我不熟悉EWS。EWS可能会提供更好的方法…那么,我如何获得所有可用林的列表呢?Alexander,您看过EWS ResolveName方法吗?谢谢