在Windows XP中获取用户的组名 – 使用任何可能的方式

我已经发布了类似的问题,关于如何在JNDI中这样做,但在这篇文章中,我想知道如何使用任何接口。

我希望能够检索用户的组名称。 当我说“小组”时,我是指电脑上的小组。 像“pipe理员”或“用户”。

我可以通过命令行,应用程序,dll或某种接口来完成吗?

有谁知道这可能会怎么做? 有没有人做过这个? 这是一个容易的任务吗?

从命令行:

net user <username> 

或者如果他们在一个域中

 net user <username> /domain 

到底部是两个部分,本地组成员和全球组成员。

注意:用户可能有很多组(在我的情况下,总共有8个!)

这里是VB中的一个例子(应该直接转换为另一种语言):

 Dim User as IADsUser Dim Group as IADsGroup Dim UserDomain as String Dim UserName as String UserDomain = "Target_User_Domain" UserName = "Target_User_Name" Set User = GetObject("WinNT://" & UserDomain & "/" & UserName & ",user") For Each Group in User.Groups Debug.Print Group.NameNext 

如果您想查找当前登录用户是否可以使用的组

 System.Security.Principal.WindowsIdentity.GetCurrent().Groups 

UPDATE

如果你想获得所有可用的组, 我想你必须使用Windows API。 但是为了检查当前用户是否在特定组中,可以使用下面的代码。

 WindowsIdentity currentUser = WindowsIdentity.GetCurrent(); WindowsPrincipal principal = new WindowsPrincipal(currentUser); bool isInGroup = principal.IsInRole("{Group Name}"); 

如果你想检查内置的Windows组,你可以在IsInRole方法中使用WindowsBuiltInRole枚举。