快速修改网卡物理地址二则

 如果您是通过网卡的物理地址进行访问网络的,那么一定会碰到需要修改物理地址的情况。如更换新网卡,网卡的物理地址重复或者让笔记本电脑临时登陆一下网络等情况。更改网卡MAC地址的文章网络中有很多,但大都说的不够详细,下面笔者试着以Windows XP操作系统为例介绍两种网卡MAC地址的修改方法,希望对大家有所帮助。

  简单的修改方法

  读者可以在桌面上的“网上邻居”图标上单击右键,选择“属性”,在弹出的“网络连接”的对话框中,在“本地连接”图标上单击右键,选择“属性”,会弹出一个“本地连接属 [img]http://adsp.online.sh.cn/04052704.gif[/img] ([url]http://ads.online.sh.cn/event.ng/Type=click&FlightID=2663&AdID=3291&TargetID=418&Segments=1[/url],89,442,899&Targets=126,418,864&Values=31,43,51,60,72,91,100,110,150,193,210,355,397,441,609,625&RawValues=&Redirect=http://www.sia.sh.cn/) 性”的对话框,单击“配置”按钮,选择“高级”,选中左栏“属性”中“Network Address”(其实,并非所有的网卡,对物理地址的描述都用“Network Address”,如Intel的网卡便用“Locally Administered Address”来描述,只要在右栏框中可以找到“值”这个选项就可以了),然后选中右栏框“值”中的上面一个单选项(非“不存在”),此时便可在右边的框中输入想改的网卡MAC地址,形式如“000B6AF6F4F9”。点击“确定”按钮,修改就完成了。

  不过,有一些网卡没有这个选项,不要着急,可以先更新网卡的驱动程序试试,一般情况下,更新驱动之后都会出现这个选项。但是依然有特殊情况,无论怎么修改都没有这个选项,那怎么办呢?接着往下看,下面的方法可以说是万能的!

  注册表修改方法

  第1步,单击“开始”,选中“运行”,键入“regedit”调出注册表。

  第2步,在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Class/{4D36E972-E325-11CE-BFC1-08002BE10318}/0000、0001、0002 等主键下,查找 DriverDesc ,内容为要修改的网卡的描述,如Intel的网卡会被描述成“Intel(R) PRO/100+ Management Adapter”,3Com的网卡会被描述成“3Com EtherLink XL 10/100 PCI For Complete PC Management NIC (3C905C-TX)”等。

  注:上面提到的关于网卡描述的选项出现的位置,和网卡本身以及操作系统有关。不同的网卡可能出现在不同的主键下,而同一网卡用不同版本的操作系统(如OEM版,VOL或者VLK等)也会出现在不同的位置。而这一步的任务就是找到含有网卡描述的主键。

  第3步,选中在第二步找到的主键,在右栏框中添加一个字符串,命名为“Network Address”,其值设为要改的MAC地址,形式如“000B6AF6F4F9”。

  注:到这一步,修改网卡物理地址的任务可以说是完成了,有的网卡需要重启以下才能正常的工作,而有的只需一点点的时间“反应”一下而已。下面的几步是为了以后再修改物理地址方便用的,如果读者不再需要再次修改,到这里可以止步了。

  第4步,在“第一步选中的主键”/Ndi/params下添加一项名为“NetworkAddress”的主键,此时一般都会随着在右栏框中产生一个“(默认)”的字符串,将其值设置为最终想要修改的MAC地址,形式如“000B6AF6F4F9”。如果没有此字符串,读者也可自行添加此字符串。

  注:此步骤就是为网卡设置一个初始MAC地址。

  第5步,在“NetworkAddress”的主键下继续添加名为“ParamDesc”的字符串,其作用为指定“NetworkAddress”主键的描述,其值可自己命名,如“Network Address”,这样在网卡的高级属性中就会出现“Network Address”选项,就是刚在注册表中加的新项“NetworkAddress”,以后只要在此修改MAC地址就可以了。

  第6步,在“NetworkAddress”的主键下继续添加名为“Optional”的字符串,其值设为“1”,则以后在网卡的高级属性中选择“Network Address”项时,右边会出现“不存在”选项。

  第7步,重新启动计算机(不是一定要重新启动,但要视不同网卡的要求而定,不过,重启没有任何差错。),按照第一种方法找到“高级”选项就可发现此时“属性”栏中已有“Network Address”的选项,现在读者可以用来直接修改MAC地址或恢复原来的地址。

二:局域网大盗技术分析5--修改网卡的物理地址

找了不少方法,也没有有效快捷的修改网卡物理地址的方法。因为网卡的物理地址实际上不可重复的,但是在window启动网络连接的时候,会读取注册表,如果在注册表设置了数据,就会将其写入网卡的eeprom中。所以最终我还是选择了修改注册表的方法来修改MAC地址。

这段程序也来自网络,应该是个中国人写的,虽然我在国外网站上搜到的。再次感谢原作者和google。

#Region "修改网卡的物理地址"
     Public Function ChangeMac(ByVal macs As String) As Boolean
         ApMAC = macs
         If IsOkay() = False Then
             Return False
             Exit Function
         End If
         Dim regKey As Microsoft.Win32.RegistryKey
         Dim Addr As String
         Addr = GetRoot(Form1.Lab_Wangka.Text)
         regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(Addr, True)
         regKey.SetValue("NetworkAddress", macs.Replace(":", ""))
         Return True
     End Function
     Private Function DoPadding(ByVal x As String) As String
         Dim Ret As String
         Dim z As Integer

         Ret = x
         If Len(x) < 4 Then
             For z = 1 To 4 - Len(x)
                 Ret = "0" & Ret
             Next
         End If

         Return Ret
     End Function
     Private Function GetRoot(ByVal Adapter As String) As String
         Dim regKey As Microsoft.Win32.RegistryKey
         Dim i As Integer = 0

         Do
             Dim Root As String = "SYSTEM/CurrentControlSet/Control/Class/{4D36E972-E325-11CE-BFC1-08002BE10318}/"
             Dim Last As String = DoPadding(i)
             regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(Root & Last, True)

             'Try
             Dim cAdapter As String = regKey.GetValue("DriverDesc", "False").ToString()
             If cAdapter = Adapter Then
                 Return Root & Last
             End If
             'Catch
             '     Exit Do
             'End Try
             i += 1
         Loop


     End Function

     Private Function IsOkay() As Boolean
         If ApMAC = "" Then
             MsgBox("You didn't enter a MAC Address", MsgBoxStyle.Critical)
             Return False
         End If

         Dim ed As String = ApMAC.Replace(":", "")

         If ed.Length <> 12 Then
             MsgBox("A MAC Address must have a length of 12", MsgBoxStyle.Critical)
             Return False
         End If

         Try
             If Form1.Lab_Wangka.Text = "" Then
                 MsgBox("No Network Adapter selected", MsgBoxStyle.Critical)
                 Return False
             End If
         Catch
             MsgBox("No Network Adapter selected", MsgBoxStyle.Critical)
             Return False
         End Try


         Dim noerror As Boolean = True
         Dim i As Integer
         For i = 0 To ed.Length - 1
             If IsHex(ed.Substring(i, 1)) = False Then
                 MsgBox("MAC Address in wrong format", MsgBoxStyle.Critical)
                 Return False
             End If
         Next

         Return True
     End Function

     Private Function IsHex(ByVal l As String) As Boolean
         Dim table As String = "0123456789ABCDEF"
         Dim i As Integer
         For i = 0 To table.Length - 1
             If l = table.Substring(i, 1) Then
                 Return True
             End If
         Next
         Return False
     End Function
#End Region

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值