c# - 一旦我在 Active Directory 中获得用户组,如何获得组的 SID?

标签 c# windows active-directory active-directory-group

我正在使用 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/

相关文章:

python - 如何使用 ldap3 python 模块强制用户在下次登录时更改密码?

c# - 使用 IP 地址和端口号进行 LDAP 连接

c# - 在 C# 中将参数传递给 System.EventHandler

c# - 与 WCF 服务共享事件

c# - 如何在有限的空间内嵌入数字签名

c# - BeginTransaction() 与 BeginTransactionAsync() 对性能有何影响

c - 以编程方式按下另一个应用程序(C,Windows)上的按钮

Python 无法在 r+ 模式下打开 11gb csv 但在 r 模式下打开

c# - 如何列出网络上的所有打印机?

windows - windbg:私有(private) pdb 符号