Конструктору ManagementObject (путь к строке) не удается проанализировать строки, полученные из запроса класса Win32_GroupUser (C #) - PullRequest
1 голос
/ 15 марта 2010

Итак, я WMI запрашиваю удаленную машину, чтобы получить членов ее Administrators группы:

SELECT PartComponent FROM Win32_GroupUser WHERE GroupComponent = "Win32_Group.Domain='MACHINE_NAME',Name='Administrators'"

Возвращает свойство PartComponent в виде строк. Вот список (имена изменены для безопасности). Пользователи домена joeblow и janedoe действительно являются локальными администраторами на этом компьютере.

\\MACHINE_NAME\root\cimv2:Win32_UserAccount.Domain="MACHINE_NAME",Name="localadmin"
\\MACHINE_NAME\root\cimv2:Win32_Group.Domain="OUR_DOMAIN",Name="Domain Admins"
\\MACHINE_NAME\root\cimv2:Win32_UserAccount.Domain="OUR_DOMAIN",Name="joeblow"
\\MACHINE_NAME\root\cimv2:Win32_UserAccount.Domain="OUR_DOMAIN",Name="janedoe"

Я пересекаю вышеупомянутые результаты в цикле. В ней я делаю следующее:

ManagementObject isInThisUser = new ManagementObject(memberString);

Я делаю это, чтобы извлечь свойства домена и имени из каждого объекта-члена. В идеальном мире я бы получил следующий список строк в качестве конечного результата:

\\MACHINE_NAME\localadmin
\\OUR_DOMAIN\Domain Admins
\\OUR_DOMAIN\joeblow
\\OUR_DOMAIN\janedoe

Но вот что происходит: объекты ManagementObject, созданные с помощью этого конструктора, появляются empty ! Домен, Имя, Подпись, все, все null! За исключением первого (местный админ). Для этого конструктор работает как рекламируется.

Почему это происходит? Это потому, что пользователь, который делает запрос, не является администратором домена? (Однако является локальным администратором на целевой машине. На самом деле это OUR_DOMAIN\janedoe.)

1 Ответ

0 голосов
/ 24 октября 2010

Ну, это работает для меня: после выбора PartComponent из ассоциатора Win32_GroupUser я делаю

string path = obj.Properties["PartComponent"].Value.ToString();
ManagementObject mo=new ManagementObject(path);

и mo содержит все заполненные свойства. Как вы заполняете переменную memberString?

...