gpt4 book ai didi

c# - 获取主组 ID

转载 作者:行者123 更新时间:2023-11-30 18:05:43 24 4
gpt4 key购买 nike

尝试获取用户所属的所有组,包括主要组:

做这样的事情:

DirectoryEntry entry = new DirectoryEntry(LDAP:/domainXYZ, userx, passwordx); 
DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.Filter = String.Format("(&(objectClass=user)(userPrincipalName={0}{1}))", userY, LDAP://domainXYZ);
SearchResultCollection resultColln= searcher.FindOne();

string actualGroupName =string.empty;
string grp ="";
foreach (SearchResult singleRes in resultColln)
{
foreach (object value in singleRes.Properties["memberof"])
{
grp = value.ToString();
Console.WriteLine("group:{0} ", grp);
}
}

这给了我除主要组之外的所有组。除了其他组之外,是否可以使用 primaryGroupID 获取主要组 name

最佳答案

您应该使用以下搜索过滤器运行另一个搜索

string.Format("(&(objectCategory=group)(objectClass=group)(primaryGroupToken={0}))", singleRes.Properties["primaryGroupID"]);

primaryGroupToken 是创建组时由 Active Directory 自动生成的计算属性。分配给用户的 primaryGroupID 存储此值。

实际上,如果你想要一个真正简单的方法,我会建议 UserPrincipal.GetGroups真的很容易。唯一的问题是您只能在 .NET 3.5 或更高版本中找到它。

using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "yourdomain.com"))
{
using (UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "YourUser"))
{
foreach (Principal p in user.GetGroups())
{
Console.WriteLine(p.Name);
}
}
}

GetGroups 仅返回直接包含您的用户的组,包括其主要组。如果要获取所有嵌套组,可以使用 GetAuthorizationGroups

关于c# - 获取主组 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5304934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com