我有 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
有什么建议吗?
最佳答案
如果您使用的是 .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
另请查看这些文章,其中提供了一些相同的概述:
关于c# - 显示属于域用户的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4457375/