我在本地计算机上有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
有什么建议吗?
答案 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
另请参阅这些文章,并对其进行了一些概述: