我正在使用 DirectorySearcher 获取 ActiveDirectory 中的用户组。
我的问题是,一旦我使用“memberOf”获得用户组,如何获得与每个组关联的 SID?
我在 .NETFramework 2.0 环境中工作。
DirectoryEntry entry = new DirectoryEntry(string.Format("LDAP://{0}", sUserDomain));
DirectorySearcher mySearcher = new DirectorySearcher(entry);
mySearcher.Filter = string.Format("(&(objectClass=user) (cn= {0}))", ui.DisplayName.ToString());
mySearcher.PropertiesToLoad.Add("memberOf");
SearchResult searchresult = mySearcher.FindOne();
最佳答案
无法在单个 LDAP 搜索中执行此操作,因为 memberOf
返回一个可分辨名称。您必须执行另一个绑定(bind)才能从组对象中获取 objectSid
属性。这是代码。
DirectoryEntry entry = new DirectoryEntry(string.Format("LDAP://{0}", sUserDomain));
DirectorySearcher mySearcher = new DirectorySearcher(entry);
mySearcher.Filter = string.Format("(&(objectClass=user) (cn= {0}))", ui.DisplayName.ToString());
mySearcher.PropertiesToLoad.Add("memberOf");
SearchResult searchresult = mySearcher.FindOne();
foreach (string dn in searchresult.Properties["memberOf"])
{
DirectoryEntry group = new DirectoryEntry(string.Format("LDAP://{0}/{1}", sUserDomain, dn));
SecurityIdentifier sid = new SecurityIdentifier(group.Properties["objectSid"][0] as byte[], 0);
Console.Out.WriteLine(sid.Value);
}
关于c# - 一旦我在 Active Directory 中获得用户组,如何获得组的 SID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11308770/