首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C# - GroupPrincipal.Getmembers(true)不返回域用户,替代方案是什么?

C#中的GroupPrincipal.GetMembers(true)方法用于获取指定组中的所有成员,包括递归获取子组的成员。然而,有时候该方法可能无法返回域用户,这可能是由于权限问题或其他原因导致的。

替代方案是使用System.DirectoryServices.AccountManagement命名空间中的UserPrincipal.GetAuthorizationGroups()方法来获取域用户。该方法返回用户所属的所有授权组,包括递归获取子组的成员。

以下是一个示例代码:

代码语言:txt
复制
using System.DirectoryServices.AccountManagement;

// 获取域用户的方法
public static List<UserPrincipal> GetDomainUsers()
{
    List<UserPrincipal> domainUsers = new List<UserPrincipal>();

    using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
    {
        UserPrincipal userPrincipal = new UserPrincipal(context);
        PrincipalSearcher searcher = new PrincipalSearcher(userPrincipal);

        foreach (Principal result in searcher.FindAll())
        {
            if (result is UserPrincipal)
            {
                domainUsers.Add((UserPrincipal)result);
            }
        }
    }

    return domainUsers;
}

这个方法使用System.DirectoryServices.AccountManagement命名空间中的PrincipalContext和PrincipalSearcher类来搜索域中的用户。通过遍历搜索结果,将UserPrincipal类型的对象添加到列表中,最后返回该列表。

这种替代方案可以解决GroupPrincipal.GetMembers(true)方法无法返回域用户的问题,并且不依赖于特定的云计算品牌商。

注意:在使用该方法之前,需要确保你的应用程序具有足够的权限来访问域用户信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券