构造函数ManagementObject(字符串路径)无法解析从查询Win32_GroupUser类(C#)获取的字符串

时间:2010-03-15 19:00:25

标签: c# wmi wql

因此,我WMI查询远程计算机以获取其Administrators组的成员:

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

它将PartComponent属性作为字符串返回。这是列表(为安全起见,名称已更改)。域用户joeblowjanedoe确实是该计算机中的本地管理员。

\\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);

我这样做,所以我可以从每个成员对象中提取Domain和Name属性。在一个完美的世界中,我会得到以下字符串列表作为最终结果:

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

但是接下来会发生什么:使用该构造函数创建的ManagementObject对象出现为空!域名,名称,标题,所有内容,全部null!除了第一个(本地管理员)。对于那个,构造函数就像宣传的那样工作。

为什么会这样?是因为进行查询的用户不是域管理员吗? (但 是目标计算机上的本地管理员。实际上,它是OUR_DOMAIN\janedoe。)

1 个答案:

答案 0 :(得分:0)

嗯,这对我有用:从关联器Win32_GroupUser中选择PartComponent后我做了

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

和mo包含填充的所有属性。你如何填充memberString变量?