c# 如何修改MAC地址呢!

时间:2021-07-17 13:36:52
网上有一个Machelper的类!我下载下来自己看来看去了!是可以获取mac的地址
但是修改呢不知道为什么老是只能修改本地连接的mac!
无线的mac一直修改不了!
不知道怎么回事!
大神有做好的例子吗可以参考一下!修改多个mac地址! c# 如何修改MAC地址呢!
比如我点第一个本地连接的!它就可以修改本地连接的mac
点击第二个无线的!它就可以修改无线的MAC!

14 个解决方案

#1


求指点!求指点!求指点!求指点!

#2


不知道是什么情况,这个Mac竟然也能修改,是不是你在用着无线呢

#3


该回复于2015-07-31 23:33:00被版主删除

#4


第一次听说能修改MAC地址,据我所知,任何设备的MAC地址都是固定的,即为出厂时焊接在主板上,并且唯一的一个物理地址

#5


你真牛,还想修改mac地址

#6


可以修改。参考以下链接试试
http://www.jb51.net/article/34833.htm

#7


//得到 MAC的注册表键
            RegistryKey macRegistry = Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control")
                .OpenSubKey("Class").OpenSubKey("{4D36E972-E325-11CE-BFC1-08002bE10318}");
            IList<string> list = macRegistry.GetSubKeyNames().ToList();
            IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties();
            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
            var adapter = nics.First(o => o.Name == "本地连接");
            if (adapter == null)
                return null;
            return string.Empty;
        }
        /// <summary>
        /// 设置MAC地址
        /// </summary>
        /// <param name="newMac"></param>
        public void SetMACAddress(string newMac)
        {
            string macAddress;
            string index = GetAdapterIndex(out macAddress);
            if (index == null)
                return;
            //得到 MAC的注册表键
            RegistryKey macRegistry = Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control")
                .OpenSubKey("Class").OpenSubKey("{4D36E972-E325-11CE-BFC1-08002bE10318}").OpenSubKey(index, true);
            if (string.IsNullOrEmpty(newMac))
            {
                macRegistry.DeleteValue("NetworkAddress");
            }
            else
            {
                macRegistry.SetValue("NetworkAddress", newMac);
                macRegistry.OpenSubKey("Ndi", true).OpenSubKey("params", true).OpenSubKey("NetworkAddress", true).SetValue("Default", newMac);
                macRegistry.OpenSubKey("Ndi", true).OpenSubKey("params", true).OpenSubKey("NetworkAddress", true).SetValue("ParamDesc", "Network Address");
            }
            Thread oThread = new Thread(new ThreadStart(ReConnect));//new Thread to ReConnect
            oThread.Start();
        }
        /// <summary>
        /// 重设MAC地址
        /// </summary>
        public void ResetMACAddress()
        {
            SetMACAddress(string.Empty);
        }

原理是windows优先查找注册表来寻找Mac,没有找到才从网卡读取。

#8


记忆里mac地址好像不能修改吧……

#9


原来看过文章说mac可以修改,也改过,但是网上有这样的工具,看看没有dll,反编译看看

#10


c# 如何修改MAC地址呢!小的不才遍历了注册表
    RegistryKey macRegistry = Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control")
                .OpenSubKey("Class").OpenSubKey("{4D36E972-E325-11CE-BFC1-08002bE10318}");  下包含NetworkAddress的!全部值都改一遍!吼吼!

#11


mac地址能够修改? c# 如何修改MAC地址呢!

#12


lz 解决了吗  我也想知道这个‘

#13


MAC地址在电脑里就能修改
c# 如何修改MAC地址呢!
不过仅限于笔记本,台式机没有这个选项

#14


这个所谓的修改,并不是将物理地址写到网卡里去了,而是用软件另外给模拟了一个MAC地址,相当于欺骗网络
当你点使用默认值的时候,还能还原回真正的物理地址

#1


求指点!求指点!求指点!求指点!

#2


不知道是什么情况,这个Mac竟然也能修改,是不是你在用着无线呢

#3


该回复于2015-07-31 23:33:00被版主删除

#4


第一次听说能修改MAC地址,据我所知,任何设备的MAC地址都是固定的,即为出厂时焊接在主板上,并且唯一的一个物理地址

#5


你真牛,还想修改mac地址

#6


可以修改。参考以下链接试试
http://www.jb51.net/article/34833.htm

#7


//得到 MAC的注册表键
            RegistryKey macRegistry = Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control")
                .OpenSubKey("Class").OpenSubKey("{4D36E972-E325-11CE-BFC1-08002bE10318}");
            IList<string> list = macRegistry.GetSubKeyNames().ToList();
            IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties();
            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
            var adapter = nics.First(o => o.Name == "本地连接");
            if (adapter == null)
                return null;
            return string.Empty;
        }
        /// <summary>
        /// 设置MAC地址
        /// </summary>
        /// <param name="newMac"></param>
        public void SetMACAddress(string newMac)
        {
            string macAddress;
            string index = GetAdapterIndex(out macAddress);
            if (index == null)
                return;
            //得到 MAC的注册表键
            RegistryKey macRegistry = Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control")
                .OpenSubKey("Class").OpenSubKey("{4D36E972-E325-11CE-BFC1-08002bE10318}").OpenSubKey(index, true);
            if (string.IsNullOrEmpty(newMac))
            {
                macRegistry.DeleteValue("NetworkAddress");
            }
            else
            {
                macRegistry.SetValue("NetworkAddress", newMac);
                macRegistry.OpenSubKey("Ndi", true).OpenSubKey("params", true).OpenSubKey("NetworkAddress", true).SetValue("Default", newMac);
                macRegistry.OpenSubKey("Ndi", true).OpenSubKey("params", true).OpenSubKey("NetworkAddress", true).SetValue("ParamDesc", "Network Address");
            }
            Thread oThread = new Thread(new ThreadStart(ReConnect));//new Thread to ReConnect
            oThread.Start();
        }
        /// <summary>
        /// 重设MAC地址
        /// </summary>
        public void ResetMACAddress()
        {
            SetMACAddress(string.Empty);
        }

原理是windows优先查找注册表来寻找Mac,没有找到才从网卡读取。

#8


记忆里mac地址好像不能修改吧……

#9


原来看过文章说mac可以修改,也改过,但是网上有这样的工具,看看没有dll,反编译看看

#10


c# 如何修改MAC地址呢!小的不才遍历了注册表
    RegistryKey macRegistry = Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control")
                .OpenSubKey("Class").OpenSubKey("{4D36E972-E325-11CE-BFC1-08002bE10318}");  下包含NetworkAddress的!全部值都改一遍!吼吼!

#11


mac地址能够修改? c# 如何修改MAC地址呢!

#12


lz 解决了吗  我也想知道这个‘

#13


MAC地址在电脑里就能修改
c# 如何修改MAC地址呢!
不过仅限于笔记本,台式机没有这个选项

#14


这个所谓的修改,并不是将物理地址写到网卡里去了,而是用软件另外给模拟了一个MAC地址,相当于欺骗网络
当你点使用默认值的时候,还能还原回真正的物理地址