我发布了一个关于如何在JNDI中执行此操作的类似问题,但在本文中我想知道如何使用任何接口来完成此操作。
我希望能够检索用户的组名。当我说“组”时,我指的是计算机上的组。像“管理员”或“用户”。
我可以通过某种命令行,应用程序,dll或界面来完成吗?
有谁知道如何做到这一点?有没有人这样做过?这是一件容易的事吗?
答案 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枚举。