【问题标题】:Check for groups a local user is a member of检查本地用户所属的组
【发布时间】:2011-04-10 10:11:01
【问题描述】:

我有获取本地组成员示例管理员的代码

private void GetUserGrps()
{
    using (DirectoryEntry groupEntry = new DirectoryEntry("WinNT://./Administrators,group"))
    {
        foreach (object member in (IEnumerable)groupEntry.Invoke("Members"))
        {
            using (DirectoryEntry memberEntry = new DirectoryEntry(member))
            {
                new GUIUtility().LogMessageToFile(memberEntry.Path);
            }
        }
    }

有没有办法使用目录服务获取本地用户所属的组?

不使用 Active Directory 或其中的域,因为我只想要本地机器而不是域。

【问题讨论】:

  • 你今天早些时候不是问过这个问题吗? -- stackoverflow.com/questions/3672602/…
  • 是的,但这是另一种方法......我需要关于它的建议......
  • 目录服务与 LDAP 或 Active Directory 的使用密切相关。它不适用于在本地 Windows 机器用户之间循环。
  • @chris.. 那么如何获取本地用户的组(用户、管理员、访客)??

标签: c# asp.net login usergroups


【解决方案1】:

试试这个

using System.DirectoryServices.AccountManagement;

static void Main(string[] args)
{
    ArrayList myGroups = GetUserGroups("My Local User");
}
public static ArrayList GetUserGroups(string sUserName)
{
    ArrayList myItems = new ArrayList();
    UserPrincipal oUserPrincipal = GetUser(sUserName);

    PrincipalSearchResult<Principal> oPrincipalSearchResult = oUserPrincipal.GetGroups();

    foreach (Principal oResult in oPrincipalSearchResult)
    {
        myItems.Add(oResult.Name);
    }
    return myItems;
}

public static UserPrincipal GetUser(string sUserName)
{
    PrincipalContext oPrincipalContext = GetPrincipalContext();

    UserPrincipal oUserPrincipal = UserPrincipal.FindByIdentity(oPrincipalContext, sUserName);
    return oUserPrincipal;
}
public static PrincipalContext GetPrincipalContext()
{
    PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Machine);
    return oPrincipalContext;
}

【讨论】:

    猜你喜欢
    • 2012-06-28
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多