【问题标题】:Getting a user's group name in Windows XP - using any way possible在 Windows XP 中获取用户的组名 - 使用任何可能的方式
【发布时间】:2009-01-28 08:56:18
【问题描述】:

我已经发布了关于如何在 JNDI 中执行此操作的类似问题,但在这篇文章中,我想知道如何使用 ANY INTERFACE 执行此操作。

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

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

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

【问题讨论】:

    标签: windows windows-xp


    【解决方案1】:

    从命令行:

    net user <username>
    

    或者如果他们在域中

    net user <username> /domain
    

    底部有 2 个部分,本地组成员资格和全球组成员资格。

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

    【讨论】:

      【解决方案2】:

      这是 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
      

      【讨论】:

        【解决方案3】:

        如果你想找出当前登录用户所属的组,你可以使用

        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 枚举。

        【讨论】:

        • 这只会获取组的 SID (?) 而不是组名。有没有办法使用这些信息来获取组名?
        猜你喜欢
        • 2010-10-03
        • 2011-03-26
        • 2011-01-19
        • 1970-01-01
        • 2011-03-11
        • 2015-03-15
        • 1970-01-01
        • 2010-09-25
        • 1970-01-01
        相关资源
        最近更新 更多