using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
using System.Windows.Forms;using IP地址切换器.BusinessObjectLayer;namespace IP地址切换器.BusinessLogicLayer
{
    class ModifyIP 
    {
        public bool ModIP(IPAddress myIP)
        {
            bool isSuccess = false;
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");//获取网卡硬件地址
            ManagementObjectCollection moc = mc.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                if ((bool)mo["IPEnabled"])
                {
                    myIP.Mac = mo["MacAddress"].ToString();
                    try
                    {
                        //设置IP地址和子网掩码
                        ManagementBaseObject newIPSubMask = mo.GetMethodParameters("EnableStatic");
                        newIPSubMask["IPAddress"] = new string[] { myIP.Ip };
                        newIPSubMask["SubnetMask"] = new string[] { myIP.Subnetmask };//SubnetMask是子网掩码的意思
                        ManagementBaseObject setIPSubMask = mo.InvokeMethod("EnableStatic", newIPSubMask, null);
                        //设置
                        //ManagementBaseObject newSubMask = mo.GetMethodParameters("EnableStatic");
                        //newSubMask["SubnetMask"] = new string[] { myIP.Subnetmask };
                        //ManagementBaseObject setSubMask = mo.InvokeMethod("EnableStatic", newSubMask, null);                        //设置网关
                        ManagementBaseObject newGate = mo.GetMethodParameters("SetGateways");
                        newGate["DefaultIPGateway"] = new string[] { myIP.Gateway };
                        ManagementBaseObject setGateway = mo.InvokeMethod("SetGateways", newGate, null);                        //设置DNS
                        ManagementBaseObject newDNS = mo.GetMethodParameters("SetDNSServerSearchOrder");
                        newDNS["DNSServerSearchOrder"] = new string[] { myIP.Dns1, myIP.Dns2 };
                        ManagementBaseObject setDNS = mo.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
                        isSuccess = true;                        
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("原因:" + ex);
                        isSuccess = false;
                    }
                }
            }
            return isSuccess;
        }
        /// <summary>
        /// 获取本机MAC地址
        /// </summary>
        /// <returns></returns>
        public  string GetMAC()
        {
            string mac = "";
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc = mc.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                if ((bool)mo["IPEnabled"])
                {
                    mac = mo["MacAddress"].ToString();
                }
            }
            return mac;
        }
    }
}
在这段代码中  foreach (ManagementObject mo in moc) 是什么意思啊?

解决方案 »

  1.   

    好像是个遍历
    遍历在moc中的mo
      

  2.   

    迭代方法把moc里的所有ManagementObject 按循环的顺序一个一个拿出来这段循环的功能是为了找到当前在用的网卡的mac地址
      

  3.   

    foreach (ManagementObject mo in moc)
     
    moc 就是查询WMI的一个结果集,也就是之前你获取到的网卡硬件地址集合ManagementObject mo 就是建立了一个实例,也就是网卡硬件地址这句话的意思就是搜寻在moc中为mo的实例而下面的语句就是,moc中的每个mo进行的操作
      if ((bool)mo["IPEnabled"])
      {
      myIP.Mac = mo["MacAddress"].ToString();
      }
      

  4.   

    对头,如果熟悉VB语法,非常常用的 For each 一种循环遍历的方法
      

  5.   

    System.Management 命名空间是 .NET 框架中的 WMI 命名空间。
    ManagementObject 或 ManagementClass:分别为单个管理对象或类
    遍历枚举数据
    ManagementClass cimobject = new ManagementClass("Win32_Processor");  
       ManagementObjectCollection moc = cimobject.GetInstances();  
       foreach(ManagementObject mo in moc)  
       {  }
      

  6.   

    foreach (ManagementObject mo in moc) 
    是常用的列表元素遍历操作类似==>
    JAVA中的
    for (ManagementObject mo : moc)PHP中的
    foreach ($moc as $mo)Perl中的
    foreach $mo (@moc)Python中的
    for mo in mocRuby中的
    for mo in moc:
      [your statement]
    end
      

  7.   

    请问一下mo["IPEnabled"]是什么意思?并且哪里能看到它的定义?