比如对于win32_process,只有handle这个属性才能构造对象,其他的就不行,比如
new ManagementObject("win32_process.name='notepad.exe'")就不行
当然,这里name不能唯一识别一个对象,当是我想能够唯一识别的对象的也不止handle吧?为什么只有handle才能构造对象?还有,不同的类,需要不同的属性来构造,比如win32_logicaldisk又是其他的属性了我怎么才能知道一个类的哪个属性能够构造ManagementObject对象?

解决方案 »

  1.   

     ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_VideoController");//获取显示卡信息集合http://www.microsoft.com/china/technet/community/scriptcenter/resources/wmifaq.mspx不知道对你有用没有?
      

  2.   

    用Create方法啊给你的例子把,好好看一下msdn
            static void Main(string[] args)
            {
                string path = "Win32_Process";
                string method = "Create";            ManagementScope scope = new ManagementScope(@"\\localhost\root\cimv2");
                scope.Connect();            ObjectGetOptions opt = new ObjectGetOptions();
                opt.Timeout = new TimeSpan(1000000);
                try
                {
                    using (ManagementClass processClass = new ManagementClass(scope, new ManagementPath(path),opt))
                    {
                        using (ManagementBaseObject inParams = processClass.GetMethodParameters(method))
                        {
                            inParams["CommandLine"] = "notepad.exe";
                            inParams["CurrentDirectory"] = "d:\\";
                            inParams["ProcessStartupInformation"] = null;
                            ManagementBaseObject outParams = processClass.InvokeMethod(method, inParams, null);
                            if ((uint)outParams["returnValue"] == 0)
                                Console.WriteLine("Success");
                            else
                                Console.WriteLine("Fail");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Fail" + ex.Message);
                }        }
      

  3.   

    我怎么才能知道一个类的哪个属性能够构造ManagementObject对象
    =========================================
    微软的定义public class ManagementClass : ManagementObject
    所有的属性都应该能构造成ManagementObject你要是想知道是不是Class可以用类别为ManagementPath属性中的IsClass来判断
      

  4.   

    你是不可能知道所有注册的对象属性的,只有要用的时候再去查具体属性,当然也可以使用微软提供的工具mgmtclassgen.exe来构造你要使用对象的强类型版本。