c# - C# - GroupPrincipal.Getmembers(true) 不返回域用户,有什么替代方法?
问题描述
GroupPrincipal.Getmembers(true) 返回嵌套组中的所有用户,但不返回域用户(即主组)。有没有办法解决这个问题,所以我们可以获得包括域用户在内的所有用户。
我尝试了 GroupPrincipal.Getmembers(false) 但它没有引入所有用户,这将有助于查看代码。
我不想将域用户添加为单独的组,因为这将是硬编码并且性能也会受到影响。
请对此提出一些建议,一直在寻找
谢谢
这是示例代码
using (var context1 = new PrincipalContext(ContextType.Domain, ""))
{
using (var group = GroupPrincipal.FindByIdentity(context1,"groupname"))
{
if (group == null)
{
}
else
{
var users = group.GetMembers(true);
foreach (UserPrincipal user in users)
{
users.ToList().ForEach(sr => result.Add(sr.SamAccountName));
//user variable has the details about the user
}
}
}
}
解决方案
这是按预期工作的。由于 Windows 2000 年代 AD 的一些遗留怪癖,域用户的填充方式与普通组不同。考虑到它隐式授予的广泛访问权限,将域用户嵌套在一个组中确实不是一个好主意。但是,如果要查找这些成员,则需要按primaryGroupID
属性搜索用户。对于域用户,它应该设置为 513。
推荐阅读
- c# - 我在 Visual Studio C# 中的项目只响应 D 而不是其他键
- c++ - 是否有一个函数可以接收数组并将其转换为向量?
- javascript - 由 history.pushState 破坏的锚菜单链接
- c# - 使用 C# Marshall.GetActiveObject 获取目标的特定实例
- cross-validation - XGBOOST/lLightgbm 过拟合,尽管交叉验证测试分数没有指示?
- php - 我如何使 PHP 只在 div 内回显?
- c# - 机器人框架.Net。在 Bot 上添加打字指示器
- java - Java - 如何按值初始化 HashMap 内部方法
- neo4j - 如何从 CYPHER 查询的 COLLECT() 子句中删除包含 NULL 的对象?
- android - 在 Android Studio 上的 JSON 对象列表上获取日期