2010-03-15 40 views
1

所以,我WMI查询远程计算机,以获取其Administrators组的成员获得的字符串:构造的ManagementObject(字符串路径)无法解析来自查询Win32_GroupUser类(C#)

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

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

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

但在这里发生的事情:通过使用构造函数创建的对象ManagementObject拿出!域名,名称,标题,一切,全部null!除了第一个(本地管理员)。对于那个,构造函数像广告一样工作。

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

回答

0

好了,这对我的作品:从社员Win32_GroupUser选择PartComponent后我做

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

和Mo含有所有的属性都填满了。你如何填写memberString变量?

相关问题