首页
学习
活动
专区
工具
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)方法无法返回域用户的问题,并且不依赖于特定的云计算品牌商。

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

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

相关·内容

  • restapi(8)- restapi-sql:用户自主的服务

    学习函数式编程初衷是看到自己熟悉的oop编程语言和sql数据库在现代商业社会中前景暗淡,准备完全放弃windows技术栈转到分布式大数据技术领域的。但是在现实中理想总是不如人意,本来想在一个规模较小的公司展展拳脚,以为小公司会少点历史包袱,有利于全面技术改造。但现实是:即使是小公司,一旦有个成熟的产品,那么进行全面的技术更新基本上是不可能的了,因为公司要生存,开发人员很难新旧技术之间随时切换。除非有狂热的热情,员工怠慢甚至抵制情绪不容易解决。只能采取逐步切换方式:保留原有产品的后期维护不动,新产品开发用一些新的技术。在我们这里的情况就是:以前一堆c#、sqlserver的东西必须保留,新的功能比如大数据、ai、识别等必须用新的手段如scala、python、dart、akka、kafka、cassandra、mongodb来开发。好了,新旧两个开发平台之间的软件系统对接又变成了一个问题。

    01

    C#调用GDI+1.1中的函数实现高斯模糊、USM锐化等经典效果。

    在GDI+1.1的版本中,MS加入不少新的特性,其中的特效类Effect就是一个很有吸引力的东西,可惜在VS2010的Image类中,却没有把这个类封装进来(不晓得是不是我没有发现),这个也许MS也有自己的考虑的,毕竟要使用这些函数,必须要求系统是Windows Vista及其以上,而XP的市场占有率在那个时候还比较高的。 不过,作为一种选择,我们有义务把这些函数给哪些已经按照了这些最新系统的客户使用。 其实,这些函数我在VB6下两年前就已经调用过,调用的方式也很简单明了,现在,在学习C#,就要考虑如何将他们封装入C#中。虽然哪些算法的更底层(像素级别的处理实现)实现在很早之前就已经实现,但是能够直接调用现有的函数对于不少朋友来说还是一件很幸福的事情的。 实现这个功能的第一步就是要找到这些函数的声明,这个在MSDN上有C风格的声明,改成C#语言的大部分都不成问题,参考 http://msdn.microsoft.com/en-us/library/ms533971(VS.85).aspx 例如,这个

    04
    领券