【问题标题】:display groups belonging to domain users显示属于域用户的组
【发布时间】:2011-05-26 08:03:40
【问题描述】:

我有 2 个用户,一个在本地机器上,一个在域上。:user1 & testdomain\user1

现在这两个用户都有不同的组

user1 = group1, group3

testdomain\user1 = group2, group4

现在我想显示这些组,显示user1 的组没有问题,但我无法显示testdomain\user1 的组。

我的代码如下。

DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
DirectoryEntry user = AD.Children.Find(completeUserName, "user");
object obGroups = user.Invoke("Groups");

foreach (object ob in (IEnumerable)obGroups)
{
    // Create object for each group.
    DirectoryEntry obGpEntry = new DirectoryEntry(ob);
    listOfMyWindowsGroups.Add(obGpEntry.Name);
}

其中 completeusername = user1 和 testdomain\user1

有什么建议吗?

【问题讨论】:

  • WinNT:// 提供程序仅用于向后兼容,并且仅适用于机器本地帐户。如果您想询问域帐户,您必须改用 LDAP:// 提供程序

标签: c# asp.net dns active-directory active-directory-group


【解决方案1】:

如果您使用的是 .NET 3.5 或更高版本,请查看 System.DirectoryServices.AccountManagement。这些类很容易使用。例如,

PrincipalContext pc = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(pc, "johndoe");
var groups = user.GetAuthorizationGroups()  // or user.GetUserGroups() 

如果它的机器用户那么你必须使用ContextType.Machine

还可以看看这些文章,它给出了一些相同的概述:

http://anyrest.wordpress.com/2010/06/28/active-directory-c/

http://msdn.microsoft.com/en-us/magazine/cc135979.aspx#S5

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-08-08
  • 2021-07-08
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多