如何在多域环境中枚举用户的组

时间:2012-07-02 08:40:17

标签: c# .net windows pinvoke directoryservices

假设您的组织中有一个包含两个域的林。在我的例子中,每个域都在服务器中定义,所以我有两个域控制器。

DOMAIN1
  group1
  user1
DOMAIN2
  group2
  user2

group1 members: user1, user2
group2 members: user1, user2

有没有办法从域DOMAIN2中的计算机列出 user1 所属的组?使用C#或WinAPI对我有效。


编辑: WinAPI函数NetUserGetGroups对我不起作用,因为它在执行时在属于域DOMAIN2的计算机中加载user1的组时不起作用。

我需要类似于LookupAccountName的能够解析跨域的内容:

  

如果在本地系统上无法解析名称,则此功能将会   尝试使用本地信任的域控制器来解析名称   系统

1 个答案:

答案 0 :(得分:0)

如果您使用的是.NET 4.0,System.DirectoryServices.AccountManagement命名空间可以提供帮助。 您使用PrincipalContext创建与域的连接,使用UserPrincipal获取用户并调用方法GetGroups。我相信您可以为所有必需的域执行此操作,前提是您拥有适当的权限。此代码项目article显示了一些示例。