Группа wmi, в которой состоят пользователи

У меня есть код, который находит всех местных пользователей:

        ManagementObjectSearcher userSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_UserAccount");
        foreach (ManagementObject user in userSearcher.Get())
        {
            if ((bool)user["LocalAccount"])
            {
                string UserName = (string)user["Name"];
            }
        }
        return;

Теперь я хочу код, который поможет мне выбрать все группы, в которых состоит пользователь. Я знаю, что есть таблица Win32_GroupUser, и я должен использовать PartComponent, чтобы указать имя пользователя, но я не могу создать запрос. Пожалуйста, помогите с информацией о WQL.

1 ответ

Запрос будет выглядеть примерно так:

select * from Win32_GroupUser 
       WHERE PartComponent="Win32_Group.Domain='Workgroup',Name='LocalAccount'" 

string query = "Select * from Win32_GroupUser Where PartComponent=";
query += '"Win32_Group.Domain=';
query += "'" + user["Domain"] + "'";
query += ",Name='" + user["Name"] + "'";
query += '"';

Вам нужно передать имя домена и имя пользователя для поиска связанных групп. Из соображений производительности я бы порекомендовал класс StringBuilder.

Я получил этот ответ из этой статьи.

Другие вопросы по тегам