所以,我WMI查询远程计算机,以获取其Administrators
组的成员获得的字符串:构造的ManagementObject(字符串路径)无法解析来自查询Win32_GroupUser类(C#)
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
拿出空!域名,名称,标题,一切,全部null
!除了第一个(本地管理员)。对于那个,构造函数像广告一样工作。
为什么会发生这种情况?是否因为进行查询的用户不是域管理员? (这是目标计算机上的本地管理员,但实际上,它是OUR_DOMAIN\janedoe
。)