繁体   English   中英

从活动目录c中的DistinguishedName获取规范路径的最佳方法是什么?

[英]What is best way to get canonical path from DistinguishedName in active directory c#

在检索所有组/用户时,从Active Directory中的DistinguishedName获取规范路径的最佳方法是什么? 以下实施有任何问题吗?

foreach (SearchResult entry in results)
            {

                var distinguishedName = entry.Properties["distinguishedName"][0].ToString(); 
                entry.RefreshCache(new string[] { "canonicalName" });
                 var canonicalName = entry.Properties["canonicalName"][0].ToString();   


            }

您的代码不起作用,因为SearchResult不包含RefreshCache方法。 将DN转换为CN的最佳方法是使用DsCrackNames函数。

您需要将DS_NAME_FORMAT.DS_FQDN_1779_NAME转换为DS_NAME_FORMAT.DS_CANONICAL_NAME。

执行此转换不需要Active Directory连接。 您需要使用DS_NAME_FLAGS.DS_NAME_FLAG_SYNTACTICAL_ONLY标志,然后将IntPtr.Zero作为连接句柄传递

请注意,使用此功能无法转换外部安全主体

但是,如果您已经查询过DN,那么您也可以查询CN。 在您的情况下,以下代码应该工作:

        foreach (SearchResult entry in results)
        {
            var distinguishedName = entry.Properties["distinguishedName"][0].ToString(); 
            var canonicalName = entry.Properties["canonicalName"][0].ToString();   
        }

如果条目不包含CN,则需要在执行AD查询之前将其作为请求的属性添加到DirectorySearcher

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM