显示属于域用户的组

时间:2010-12-16 04:15:42

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

我在本地计算机上有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

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

如果您使用的是.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