zoukankan      html  css  js  c++  java
  • 【转】 ManagementClass,ManagementObject 的使用

    原文:http://blog.csdn.net/hardstone1/article/details/5380775

    网上代码和MSDN帮助中都没有列出 ManagementObject[" "]这里到底有哪些属性可以使用,参考了http://www.groupsrv.com/dotnet/about69957.html了之后发现了可以枚举出来所有属性,代码如函数getallprop()。

    函数useprop中描述了如何获取以激活的网卡的IP地址和它的驱动程序名称,如果大伙需要其他的网卡其他属性,就到getallprop()的结果中去找了,全英文的属性,没有对应的中文介绍,太多了,自己慢慢望文生义吧。

           public void getallprop() //获取某个ManagementClass[" "]的所有属性名和值
            {
                ManagementClass c = new ManagementClass("Win32_Process");
                ManagementClass mc;
                mc = new ManagementClass("Win32_NetworkAdapterConfiguration");//网卡信息

                //mc = new ManagementClass("Win32_Process");//查看系统进程信息

                ManagementObjectCollection moc = mc.GetInstances();

                foreach (ManagementObject o in moc)
                    foreach (PropertyData prop in o.Properties)
                        textBox2.Text += prop.Name + "---" + prop.Value + "/r/n";  //列出所有可以使用的属性名和值

                   
            }

            public string useprop()  //具体属性名的使用
            {
                string []mac ;
                ManagementClass mc;
                mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if (mo["IPEnabled"].ToString() == "True")
                    {
                        mac = (System.String[]) mo["IPAddress"];     //获去某网卡IP地址,可以多IP,所以是string[]类型

                        textBox2.Text += mac[0];//获得某网卡的第一个IP
                        textBox2.Text += mo["ServiceName"] + "/r/n"; //这个是网卡的驱动程序名
                    }
                }
              
                return "";
            }

    原文:http://www.cnblogs.com/xiangdejun/archive/2010/07/22/1783061.html

    1. 添加

    System.Management 的引用

    2. 在cs代码中初始化引用

    ManagementClass mc = new ManagementClass("引用的WMI库名称");

    可供引用的WMI类库在MSDN中可查到:

    http://msdn.microsoft.com/en-us/library/aa394084(v=VS.85).aspx

    3. 获取WMI实例

    ManagementObjectCollection moc= vNetworkAdapter.GetInstances();

    这里获取到的是WMI实例集合,例如,获取网络适配器信息,这里会获取到无线连接、有线连接、1394连接等与网络连接有关的实例集合。

    4. 循环个实例获取其属性

    foreach (ManagementObject mo in moc)
    {

      //TODO: 获取各实例属性

      //实例各属性、方法、解释也可在http://msdn.microsoft.com/en-us/library/aa394084(v=VS.85).aspx里查到

    }

    5. 修改

    修改需要用到 ManagementObject.InvokeMethod(MethodName, ManagementBaseObject, InvokeMethodOptions ); 方法

    MethodName 为要执行的方法名称的,也可在上面MSDN的链接中查到;

    ManagementBaseObject 不好解释,官方解释为“包含管理对象的基本元素。用作管理更具体的管理对象类的基类。”

    InvokeMethodOptions 执行附加选项,可以为NULL。

    完整实例:

    复制代码
    ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection moc 
    = mc.GetInstances();
    foreach (ManagementObject  mo in moc)
    {
        
    //如果没有启用IP设置的网络设备则跳过   
        if (!(bool)mo["IPEnabled"])
            
    continue

        
    // 获取属性
        string caption = mo["Caption"].ToString();              //名称
        string[] addresses = (string[])mo["IPAddress"];         //IP地址
        string[] subnets = (string[])mo["IPSubnet"];            //子网掩码
        string[] gateways = (string[])mo["DefaultIPGateway"];   //网关
        string[] dnses = (string[])mo["DNSServerSearchOrder"];  //DNS

        ManagementBaseObject newIP;

        
    // 修改IP及子网掩码
        newIP = mo.GetMethodParameters("EnableStatic");    
        newIP[
    "IPAddress"= new string[] { "192.168.2.51" };
        newIP[
    "SubnetMask"= new string[] { "255.255.255.0" }; //修改IP同时,需要填写子网掩码
        mo.InvokeMethod("EnableStatic", newIP, null);
        

        
    // 设置网关地址 
        newIP = mo.GetMethodParameters("SetGateways");
        newIP[
    "DefaultIPGateway"= new string[] { "192.168.2.1" };
        mo.InvokeMethod(
    "SetGateways", newIP, null);

        
    // 设置DNS 
        newIP = mo.GetMethodParameters("SetDNSServerSearchOrder");
        newIP[
    "DNSServerSearchOrder"= new string[] { "192.168.1.10" };
        mo.InvokeMethod(
    "SetDNSServerSearchOrder", newIP, null);
       
    }
  • 相关阅读:
    Educational Codeforces Round 86 (Rated for Div. 2) D. Multiple Testcases
    Educational Codeforces Round 86 (Rated for Div. 2) C. Yet Another Counting Problem
    HDU
    HDU
    HDU
    HDU
    Good Bye 2019 C. Make Good (异或的使用)
    Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam
    codeforces 909C. Python Indentation
    codeforces1054 C. Candies Distribution
  • 原文地址:https://www.cnblogs.com/81/p/3024995.html
Copyright © 2011-2022 走看看