【问题标题】:Constructor ManagementObject(string path) fails to parse strings obtained from querying Win32_GroupUser class (C#)构造函数ManagementObject(字符串路径)无法解析通过查询Win32_GroupUser类(C#)获得的字符串
【发布时间】:2011-01-27 19:50:57
【问题描述】:

所以,我 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 对象出现empty!域名,名称,标题,一切,所有null!除了第一个(本地管理员)。对于那个,构造函数就像宣传的那样工作。

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

【问题讨论】:

    标签: c# wmi wql


    【解决方案1】:

    好吧,这对我有用:在从关联 Win32_GroupUser 中选择 PartComponent 之后,我会这样做

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

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

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 2019-05-03
      • 2017-02-18
      • 1970-01-01
      • 2023-01-04
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多