如何在.NET中获取DirectorySearcher的SearchResult的DN?

时间:2011-12-19 03:58:41

标签: c# active-directory ldap directoryservices

我们如何才能可靠地获得DN的{​​{1}}?

我们一直在使用SearchResult但最近遇到了不支持此安装的安装。该客户有其他应用程序可以归结为调用Win32的SearchResult.Properties["dn"]方法,但在.NET中似乎没有等效的ldap_get_dn

解决方案需要跨LDAP服务器工作,而不是特定于ActiveDirectory。

2 个答案:

答案 0 :(得分:1)

一开始并不清楚但我们后来发现SearchResult.Path属性包含DN并且可以为它进行解析。这与我们迄今为止遇到的所有服务器一致。

SearchResult result;
...
string userDn = result.Path;

// typical Path is
// LDAP://my.ldap.server.com:39/CN=a,CN=b,OU=c
// we want to grab the part after the third '/'
int i = userDn.IndexOf('/', 7);
if (i >= 0 && userDn.Length > i + 1)
{
    userDn = userDn.Substring(i + 1);
}

SearchResult.Path Property

http://msdn.microsoft.com/en-us/library/system.directoryservices.searchresult.path.aspx

答案 1 :(得分:0)

base object始终是专有名称,可通过LDAP搜索结果条目(但不是搜索结果参考)提供。但是,可分辨名称不是属性。