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);
       
    }
  • 相关阅读:
    代码高亮测试
    docker详解
    生成python项目的docker模板
    Windows下载Ubuntu的文件,用WinSCP软件(建议用MobeXterm),Ubuntu开启SSH连接
    分配堆内存的四种方式
    像素和rgb
    自由飞翔
    像素和分辨率的关系
    DOM事件阶段以及事件捕获与事件冒泡先后执行顺序
    有点甜 汪苏泷
  • 原文地址:https://www.cnblogs.com/81/p/3024995.html
Copyright © 2011-2022 走看看