C# 显示属于域用户的组

C# 显示属于域用户的组,c#,asp.net,dns,active-directory,active-directory-group,C#,Asp.net,Dns,Active Directory,Active Directory Group,我有两个用户,一个在本地计算机上,一个在域上。user1&testdomain\user1 现在这两个用户都有不同的组 user1 = group1, group3 testdomain\user1 = group2, group4 现在我想显示这些组,我在显示user1的组时没有问题,但是我不能显示testdomain\user1的组 我的代码如下 DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.Machine

我有两个用户,一个在本地计算机上,一个在域上。
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);
}
其中completeesername=user1和testdomain\user1


有什么建议吗?

如果您使用的是.NET 3.5或更高版本,请查看。这些课程非常容易使用。比如说,

PrincipalContext pc = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(pc, "johndoe");
var groups = user.GetAuthorizationGroups()  // or user.GetUserGroups() 
如果是其机器用户,则必须使用
ContextType.machine

另外,请看一下这些文章,其中提供了一些相同的概述:


WinNT://提供程序仅用于向后兼容,并且仅适用于计算机本地帐户。如果要查询域帐户,必须使用LDAP://provider,而不是getAuthorizationGroups不起作用,我会得到错误(5),而get groups会给我一个值“domain Users”。请帮我谢谢..这是权限相关的问题-看看这些线程是否给你任何线索:。也许,您可以确保当前windows用户具有查询广告授权组的权限。