简单的C#WMI Get&放

时间:2014-08-29 15:17:05

标签: c# wmi

我正在尝试阅读&使用C#将值与WMI放在一起。

当前示例使用ccm命名空间,用于configmgr客户端。

读取功能正常工作,能够读取ADV_RepeatRunBehavior值。 虽然Put();如果没有按预期工作,则不会存储这些值并抛出Invalid Class异常。

一些建议会很好,因为我是新手,非常感谢。

static void Main(string[] args)
{
    try
    {
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(
            "root\\ccm\\Policy\\Machine", 
            "SELECT * FROM CCM_SoftwareDistribution WHERE PKG_PackageID='XXXXXXXX'");

        foreach (ManagementObject queryObj in searcher.Get())
        {
            //Read works
            //Console.WriteLine(queryObj["ADV_RepeatRunBehavior"].ToString());
            //Console.ReadLine();

            //Put doesn't
            queryObj["ADV_RepeatRunBehavior"] = "RerunNever";
            queryObj.Put();
        }
    }
    catch (ManagementException z)
    {
        Console.WriteLine("An error occurred: " + z.Message);
        Console.ReadLine();
    }
}

1 个答案:

答案 0 :(得分:1)

找到解决方法。

  1. 如果在localhost上进行测试
  2. ,则必须以管理员身份运行Visual Studio
  3. 与WMI的连接必须为\\root\\ccm\\Policy\\Machine\\ActualConfig,然后才能为Put()值。