正如标题所提到的,我需要一种方法来获取 ActiveDirectory 中某个组所属的所有组。
要获取用户所属的所有组,我使用
public static DirectoryEntry[] GetGroupsUserIsMemberOf(DirectoryEntry directoryEntry)
{
ArrayList groupsUserIsMemberOf = new ArrayList();
object groups = null;
DirectoryEntry[] userGroupEntries = null;
if (directoryEntry != null && directoryEntry.SchemaClassName == "user") {
groups = directoryEntry.Invoke("Groups", null);
foreach (object group in (IEnumerable)groups) {
groupsUserIsMemberOf.Add(new DirectoryEntry(group));
}
userGroupEntries = (DirectoryEntry[])groupsUserIsMemberOf.ToArray(typeof(DirectoryEntry));
}
return userGroupEntries;
}
但是在尝试的时候
public static DirectoryEntry[] GetGroupsGroupIsMemberOf(DirectoryEntry directoyEntry)
{
ArrayList groupsGroupIsMemberOf = new ArrayList();
object groups = null;
DirectoryEntry[] groupEntry = null;
if (directoyEntry != null && directoyEntry.SchemaClassName == "group") {
groups = directoyEntry.Invoke("Groups", null); // throws exception (see below)
foreach (object group in (IEnumerable)groups) {
groupsGroupIsMemberOf.Add(new DirectoryEntry(group));
}
groupEntry = (DirectoryEntry[])groupsGroupIsMemberOf.ToArray(typeof(DirectoryEntry));
}
return groupEntry;
}
获取所有组一个组是该行的成员
groups = directoyEntry.Invoke("Groups", null); // throws exception (see below)
抛出异常:
"Unknown name. (exception HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME))"
有人知道获取一个组所属的所有组的高效方法吗?
最佳答案
我觉得我自己搞定了:
要获取一个组所属的所有组,您可以使用
directoryEntry.Properties["memberOf"][0]
然后您将获得一个字符串对象,其中包含您的组所属的所有 ADObject。
将其拆分为单个 AD-Object 字符串,检查是否分组。
关于c# - 如何使用 C# 在 Active Directory 中获取组所属的组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/915547/