gpt4 book ai didi

c# - 如何获取特定用户的所有 AD 组?

转载 作者:IT王子 更新时间:2023-10-29 04:03:01 26 4
gpt4 key购买 nike

我检查了this已经发布。但它没有回答我的问题。我想获取特定用户所属的所有事件目录组。

我编写了以下代码。但我无法继续进行下去,因为我不知道如何提供过滤器以及如何访问属性。

class Program
{
static void Main(string[] args)
{
DirectoryEntry de = new DirectoryEntry("LDAP://mydomain.com");
DirectorySearcher searcher = new DirectorySearcher(de);
searcher.Filter = "(&(ObjectClass=group))";
searcher.PropertiesToLoad.Add("distinguishedName");
searcher.PropertiesToLoad.Add("sAMAccountName");
searcher.PropertiesToLoad.Add("name");
searcher.PropertiesToLoad.Add("objectSid");
SearchResultCollection results = searcher.FindAll();
int i = 1;
foreach (SearchResult res in results)
{
Console.WriteLine("Result" + Convert.ToString(i++));
DisplayProperties("distinguishedName", res);
DisplayProperties("sAMAccouontName", res);
DisplayProperties("name", res);
DisplayProperties("objectSid", res);
Console.WriteLine();
}

Console.ReadKey();
}

private static void DisplayProperties(string property, SearchResult res)
{
Console.WriteLine("\t" + property);
ResultPropertyValueCollection col = res.Properties[property];
foreach (object o in col)
{
Console.WriteLine("\t\t" + o.ToString());
}
}
}

有什么想法吗?

最佳答案

你应该使用 System.DirectoryServices.AccountManagement .这要容易得多。这是一个不错的代码项目 article为您提供此 DLL 中所有类的概览。

正如您所指出的,您当前的方法无法找出主要群体。事实上,它比你想象的要糟糕得多。还有一些它不起作用的情况,例如来自另一个域的域本地组。你可以查看here了解详情。如果您切换为使用 System.DirectoryServices.AccountManagement,代码如下所示。以下代码可以找到该用户分配到的直接组,其中包括主要组。

UserPrincipal user = UserPrincipal.FindByIdentity(new PrincipalContext (ContextType.Domain, "mydomain.com"), IdentityType.SamAccountName, "username");
foreach (GroupPrincipal group in user.GetGroups())
{
Console.Out.WriteLine(group);
}

关于c# - 如何获取特定用户的所有 AD 组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4460558/

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