Mac地址修改方法

来源:互联网 发布:淘宝会员折扣哪里设置 编辑:程序博客网 时间:2024/05/18 00:31

注册表修改方法:

 

由给定的键值更改

 

     private const string NETWORKADDRESS_KEY = @"SYSTEM/CurrentControlSet/Control/Class/{4D36E972- E325-11CE-BFC1-08002bE10318}/0001";//网卡在键值1所在的位置
        private const string NETWORKADDRESS_NAME = "NetworkAddress";

        public string ReadMac()
        {
            RegistryKey HKLM = Registry.LocalMachine;
            try
            {
                RegistryKey Reg = HKLM.OpenSubKey(NETWORKADDRESS_KEY);
                object o = Reg.GetValue(NETWORKADDRESS_NAME);
                return o.ToString();
            }
            catch
            {
                return string.Empty;
            }
        }

        public void SetMac(string mac)
        {
            RegistryKey HKLM = Registry.LocalMachine;
            RegistryKey Reg = HKLM.OpenSubKey(NETWORKADDRESS_KEY, true);
            Reg.SetValue(NETWORKADDRESS_NAME, mac);
        }
        public void SetNetworkAddress(string networkaddress)
        {
            List<string> netAddressName = this.GetAllNetworkAdapter();
            chagneNetWorkAdapterMac(networkaddress, netAddressName[0]);
        }

 

如有多块网卡,则寻第一块并设Mac值

 

 

        /// <summary>
        /// 网卡地址,网卡名称
        /// </summary>
        /// <param name="NetworkMac"></param>
        /// <param name="NetworkAdapterName"></param>
        public void chagneNetWorkAdapterMac(string NetworkMac, string NetworkAdapterName)
        {
            //打开注册表
            RegistryKey rk = Registry.LocalMachine;
            string caption = "";//网卡标志
            //MessageBox.Show(NetworkAdapterName);
            string NetMac = NetworkMac;
            string nowNetWork = NetworkAdapterName;
            //HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Class/{4D36E972-E325-11CE-BFC1-08002bE10318}
            string subKeyPath = @"SYSTEM/CurrentControlSet/Control/Class/{4D36E972-E325-11CE-BFC1-08002bE10318}/";
            RegistryKey rsKey = null;
            string allKeyPath = null;
            for (int i = 0; i <= 20; i++)
            {
                allKeyPath = subKeyPath + "000" + i.ToString();
                rsKey = rk.OpenSubKey(allKeyPath, true);
                MessageBox.Show(rsKey.ToString());
                if (rsKey.SubKeyCount < 2)//里面的键值个数多于1
                    continue;
                if (null != rsKey)
                {
                    caption = rsKey.GetValue("DriverDesc").ToString();
                    if (nowNetWork.IndexOf(caption) > -1)
                    {
                        rsKey.SetValue("NetworkAddress", NetMac);
                        MessageBox.Show(NetMac.ToString()+"Mac修改成功");
                        break;
                    }
                }
            }
        }
        /// <summary>
        /// 得到IP属性的名称
        /// </summary>
        /// <returns></returns>
        public List<string> GetAllNetworkAdapter()
        {
            List<string> allNetworkAdapte = new List<string>();

            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc = mc.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                if ((bool)mo["IPEnabled"] == true)
                    allNetworkAdapte.Add(mo["Caption"].ToString());//5-1-a-s-p-x
            }

            return allNetworkAdapte;
        }

原创粉丝点击