【发布时间】:2009-01-28 08:56:18
【问题描述】:
我已经发布了关于如何在 JNDI 中执行此操作的类似问题,但在这篇文章中,我想知道如何使用 ANY INTERFACE 执行此操作。
我希望能够检索用户的组名。当我说“组”时,我指的是计算机上的组。比如“管理员”或“用户”。
我可以通过命令行、应用程序、dll 或某种接口来完成吗?
有谁知道如何做到这一点?有人做过吗?这是一件容易的事吗?
【问题讨论】:
标签: windows windows-xp
我已经发布了关于如何在 JNDI 中执行此操作的类似问题,但在这篇文章中,我想知道如何使用 ANY INTERFACE 执行此操作。
我希望能够检索用户的组名。当我说“组”时,我指的是计算机上的组。比如“管理员”或“用户”。
我可以通过命令行、应用程序、dll 或某种接口来完成吗?
有谁知道如何做到这一点?有人做过吗?这是一件容易的事吗?
【问题讨论】:
标签: windows windows-xp
从命令行:
net user <username>
或者如果他们在域中
net user <username> /domain
底部有 2 个部分,本地组成员资格和全球组成员资格。
注意:一个用户可能有很多组(在我的工作中总共有 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
更新
如果您想获取所有可用组,我认为您必须使用 Windows API。但是为了检查当前用户是否在特定组中,您可以使用以下代码。
WindowsIdentity currentUser = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(currentUser);
bool isInGroup = principal.IsInRole("{Group Name}");
如果你想检查内置的 windows 组,你可以在 IsInRole 方法中使用 WindowsBuiltInRole 枚举。
【讨论】: