Как может я о получении составов группы пользователя от AD, предпочтительно с помощью того же шаблона, как я использую для получения свойства Department пользователя, как ниже? Я нашел несколько примеров, но пересекающийся набор всех методов в качестве примера является довольно маленьким, и испытывает недостаток в плотности и простоте этого запроса Отдела:
var adServer = ConfigurationManager.AppSettings["adServer"] ?? "localhost";
var remoteRoot = new DirectoryEntry(GetRootPath(adServer));
var searcher = new DirectorySearcher(remoteRoot, string.Format("(SAMAccountName={0})", shortUserName));
searcher.PropertiesToLoad.Add("Department");
SearchResult result = null;
result = searcher.FindOne();
Вы находитесь на .NET 3.5 ? Если да, то это очень просто:
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");
string userName = "yourUser";
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, userName);
PrincipalSearchResult<Principal> results = user.GetAuthorizationGroups();
Найдите своего пользователя, а затем вызовите .GetAuthorizationGroups()
на вашем основном пользователе - это вернет все группы, к которым принадлежит пользователь, включая его основную группу, а также все вложенные группы, к которым он принадлежит.
Зацените эту MSDN статью, чтобы узнать больше нового в .NET 3.5, когда дело касается AD.
В .NET 2.0 все гораздо сложнее...
.