今天在win7下尝试修改网卡的MAC地址时,发现不生效的问题,很是费解.网上查了一些资料,发现以下文章:
<win7 修改MAC 地址无效的解决办法>
内容如下(黄色部分,此内容从以下网址复制,图片未复制 http://blog.csdn.net/xpb1980/article/details/18016865):
1.修改网卡的MAC 地址
计算机——属性——设备管理器——网络设备器——网卡——属性
然后点击 高级——本地管理MAC地址右边的值修改,网卡的MAC地址修改完成
2 如果用户发现没有管理本地MAC地址怎么办?
可以通过修改注册表来添加这个MAC地址键值
下面以我的笔记本位列,简述MAC地址的修改步骤:
1. 在运行中输入:regedit命令,进入注册表。
在注册表中找到下面位置:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
2. 通过查找诸如0000,0001分支中的DriverDesc的键值来查看现有网卡是在哪个分支下。(我的是在0014下)
3. 在0014子键下添加一个字符串,命名为“NetworkAddress”,键值为修改后的MAC地址,要求为连续的12个16进制数。
4. 然后在“0014”子键下的NDI\params中新建一项名为NetworkAddress的子键,在该子键下添加名为“default”的字符串,键值为修改后的MAC地址。
5. 在NetworkAddress的子键下继续建立名为“ParamDesc”的字符串,其作用为指定NetworkAddress的描述,其值可为 “MAC Address”。这样以后打开网络邻居的“属性”,双击相应的网卡就会发现有一个“高级”设置,其下存在MAC Address的选项,它就是你在注册表中加入的新项NetworkAddress,以后只要在此修改MAC地址就可以了
3 好了按照以上方式 顺利的话你会修改成功你的MAC 地址,在WINDOWS控制台 CMD命令,IPCONFIG -all 发现你的MAC 地址修改完成 那么恭喜你 你已经修改了你的MAC 地址,但是有时候你会发现修改无效
以上在WINDOWS XP 下面修改 完全是没有问题的
在WINDOW7 下面MAC 地址不能随机生成MAC 地址,修改时要注意如下规则:
从左往右第二个字符必须2,6,A,E其中之一,
列如:
02:00:00:00:00:00 —有效
06:00:00:00:00:00 —有效
0A:00:00:00:00:00 —有效
0E:00:00:00:00:00 —有效
不知道是不是WIN7 的一个BUG 还是什么
文章的最后,提到,第一个字节必须为02,06,0a,0e,按照这个规则改下来,好像也确实是那么一回事.
这里不得不感叹一下,真的是天下文章一大抄啊,同样的文字,在N个网站上被找到.
这个就不吐槽了,因为我也抄了上面的文字,真是难为情.
来研究一下最后的结论,”不知道是不是WIN7的一个BUG”,直觉告诉我,这肯定不是bug,做windows的人,肯定有他的想法.
直觉告诉我,得去查一下MAC地址的每一位定义.
发现,最高字节的最低一位,是用来表示单播和多播的,笔记本的地址,按照理解应该算单播吧,所以这个是0应该不过分;最高字节的倒数第二低位是表示universally administered address 和locally administered address的,如果是修改的地址,那么按照规则来说,应该定义为locally address,因此这一位肯定得是1啊.
所以按照上面的理解,最高字节应该是0bxxxxxx10才对,符合上述规则的,而参考文章的02,06,0a,0e的最低两位不都是10么?
所以,这肯定不是win7的bug了,而是我们想的不够多.
最后,又做了一些额外的测试,将第一个字节改为0x16,0xa6测试,发现修改也是生效的,所以,并不是之前文章所说的02,06,0a,0e才行.
这也符合了我之前的猜想,最高字节必须符合0bxxxxxx10这个规则.
至于最高字节其他值,如0x22,0xFE等等,有兴趣的朋友也可以去测试一下.