在Windows XP中获取用户的组名 - 尽可能使用

时间:2009-01-28 08:56:19

标签: windows windows-xp

我发布了一个关于如何在JNDI中执行此操作的类似问题,但在本文中我想知道如何使用任何接口来完成此操作。

我希望能够检索用户的组名。当我说“组”时,我指的是计算机上的组。像“管理员”或“用户”。

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

有谁知道如何做到这一点?有没有人这样做过?这是一件容易的事吗?

3 个答案:

答案 0 :(得分:8)

从命令行:

net user <username>

或者如果他们在域上

net user <username> /domain

接下来是两个部分,本地集团成员资格和全球集团成员资格。

注意:用户可能有很多组(在我的工作中总共有8个!)

答案 1 :(得分:1)

以下是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

答案 2 :(得分:0)

如果要查找当前登录用户所属的组,可以使用

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

<强>更新

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

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

如果要检查内置窗口组,可以在IsInRole方法中使用WindowsBuiltInRole枚举。