c# - 如何使用 C# 在 Active Directory 中获取组所属的组?

标签 c# .net active-directory

正如标题所提到的,我需要一种方法来获取 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/

相关文章:

c# - 在 C# 中为用户创建 Exchange 邮箱

c# - 事件目录 : get groups where a user is member

c# - 可以将字符串日期转换为 mysql 日期时间吗?

c# - 如何使用 add-in express 获取 outlook 电子邮件主题

c# - Uri.Host 和 Uri.Authority 有什么区别

c# - 使用 HTMLAgilityPack c# 按类名删除元素

c# - 在 C# 中引用时,VB 程序集中的默认公共(public)只读属性未出现

java - 如何使用 Windows 登录进行单点登录和桌面 Java 应用程序的 Active Directory 条目?

c# - Crystal 报表 : Operation not yet implemented

c# 枚举函数参数