При получении списка групп пользователь принадлежит от сервиса окон

Что лучший способ состоит в том, чтобы получить список групп, которым принадлежит пользователь от сервиса окон?

List<string> groups = new List<string>();

foreach (IdentityReference ir in new WindowsIdentity(name).Groups)
{
     SecurityIdentifier sid = new SecurityIdentifier(ir.Value);
     NTAccount ntAccount = (NTAccount)sid.Translate(typeof(NTAccount));
     groups.Add(ntAccount.ToString());
}

Я пытался использовать выше кода, но он повысил следующую ошибку.

Error communicating with client: System.Security.SecurityException: Incorrect function.
1
задан DOK 23 July 2010 в 17:07
поделиться

2 ответа

Как насчет использования запросов LDAP для работы с Active Directory?

http://www.codeproject.com/KB/system/activedirquery.aspx

2
ответ дан 2 September 2019 в 22:48
поделиться

Ниже приведен код, который я в итоге использовал. Я понятия не имел о LDAP, но, похоже, это может вызвать некоторые проблемы с безопасностью ...

public static List<string> GetUserGroups(string name)
    {
        List<string> groups = new List<string>();
        DirectorySearcher search = new DirectorySearcher("");
        int groupCount;
        int counter;
        string GroupName;
        string DataToWriteGroups;

        search.Filter = "(&(objectClass=user)(SAMAccountName=" + name + "))";
        search.PropertiesToLoad.Add("memberOf");


        SearchResult result = search.FindOne();


        groupCount = result.Properties["memberOf"].Count;

        if (groupCount > 0)
        {
            DataToWriteGroups = "Group(s) Belongs To User - " + name + "";
            for (counter = 0; counter <= groupCount - 1; counter++)
            {
                GroupName = "";
                GroupName = (result.Properties["memberOf"][counter].ToString());
                groups.Add(GroupName);
            }
        }

        return groups;
    }
0
ответ дан 2 September 2019 в 22:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: