vbs Windows系统改变或修改网卡的MAC地址的脚本与软件

核心代码

'/*=========================================================================
' * Intro    网上找了一圈,都不怎么好,有一个比较不错的,汉化作者汉化时加了个自己的介绍文件,这个文件比程序本身还大,感觉不爽,于是本人的VBS版MAC修改代码便诞生了,在使用过程中如果出现不能上网的情况得返回一下网卡驱动(有些机器比较特别),如果要返回以前的MAC可以:开始-->控制面板-->网络连接-->点击您的网卡(一般是"本地连接")-->点击常规里的属性-->配置..-->高级-->选中-->NetworkAddress-->右边选择"不存在"
' * FileName  ChangeMAC.vbs
' * Author   yongfa365
' * Version   v3.0
' * WEB     http://www.yongfa365.com
' * Email    yongfa365[at]qq.com  

' * MadeTime  2007-12-09 22:17:58
' * LastModify 2007-12-13 18:35:58
' *==========================================================================*/  

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=true", , 48)
For Each objItem in colItems
  msg = msg & "编号:" & objItem.Index & "  MAC:" & objItem.MACAddress & vbCrLf & "网卡:" & objItem.Description & vbCrLf & vbCrLf
Next  

idx = InputBox( msg , "1/2请输入您要修改的MAC的编号", "1")
If Not IsNumeric(idx) Or Len(idx) = 0 Then
  WScript.Echo "编号输入有误,退出"
  Wscript.Quit
End If
MAC = InputBox( "输入你指定的MAC地址值(注意应该是12位的连续数字或字母,其间没有-、:等分隔符)" , "2/2请输入修改后的MAC地址", "000000000000")
MAC = Replace(Replace(Replace(MAC, ":", ""), "-", ""), " ", "")
If RegExpTest("[^\da-fA-F]", MAC)>0 Or Len(MAC)<>12 Then
  WScript.Echo "MAC输入有误,退出"
  Wscript.Quit
End If  

idx = Right("00000"&idx, 4)
reg = "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\" & idx
Set WSHShell = CreateObject("WScript.Shell")
WshShell.RegWrite reg & "\NetworkAddress", MAC , "REG_SZ"
WshShell.RegWrite reg & "\Ndi\params\NetworkAddress\default" , MAC , "REG_SZ"
WshShell.RegWrite reg & "\Ndi\params\NetworkAddress\ParamDesc" , "NetworkAddress" , "REG_SZ"
WshShell.RegWrite reg & "\Ndi\params\NetworkAddress\optional" , "1" , "REG_SZ"
'得到网卡的名称,比如“本地连接 2”
NetWorkName = WshShell.RegRead("HKLM\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\" & WshShell.RegRead(reg & "\NetCfgInstanceId") & "\Connection\Name")  

restartNetWork NetWorkName
'WScript.Echo "修改成功"  

Function restartNetWork(sConnectionName)
  '重启网卡
  'sConnectionName = "本地连接 5" '可改成需要控制的连接名称,如"无线网络连接"等
  '定位到网络连接
  Set shellApp = CreateObject("shell.application")
  Set oControlPanel = shellApp.Namespace(3)
  For Each folderitem in oControlPanel.Items
    If folderitem.Name = "网络连接" Then
      Set oNetConnections = folderitem.GetFolder
      Exit For
    End If
  Next
  '定位到要处理的网卡
  For Each folderitem in oNetConnections.Items
    If LCase(folderitem.Name) = LCase(sConnectionName) Then
      Set oLanConnection = folderitem
      Exit For
    End If
  Next
  '重启网卡
  For i = 1 To 2
    For Each verb in oLanConnection.verbs
      If RegExpTest("启用|禁用|停止", verb.Name)>0 Then
        verb.DoIt
        Exit For
      End If
    Next
    '有时网卡半天反应不过来,可以把这个参数设的大点一般程序可以正常运行,或您多运行几次程序
    WScript.Sleep 5000
  Next  

End Function  

'正则测试有没有匹配内容  

Function RegExpTest(patrn, strng)
  Set re = New RegExp
  re.Pattern = patrn
  re.IgnoreCase = True
  re.Global = True
  Set Matches = re.Execute(strng)
  RegExpTest = Matches.Count
End Function

网上相关介绍一:

  如何修改网卡MAC地址

  轻松修改网卡的MAC(物理)地址如今大家都是ADSL上网,当你查网费时就会发现,每次上网电信都会记录下你的网卡MAC地址,这是因为IP地址是动态的(每次上网都不同),而MAC地址却是不变的——每张网卡都有一个与众不同的MAC(物理)地址,因此MAC地址就成了客户的网上身份证,通过记录MAC地址,即可确认是你上的网!

  一、MAC地址的用途
  MAC地址在网卡中是固定的,每张网卡的MAC地址都不一样。网卡在制作过程中,厂家会在它的EPROM里面烧录上一组数字,这组数字,每张网卡都各不相同,这就是网卡的MAC(物理)地址。

  由于MAC地址的唯一性,因此它主要用来识别网络中用户的身份。例如ADSL上网时,电信用它来记费,确认是你上的网;在校园网中,MAC地址也可以用来识别用户。对于校园网的正式用户,其MAC地址会登记在服务器端,假如你是非法用户,服务器中就没有你的网卡MAC地址,这样当你试图连上网时,服务器就会立刻认出你、阻止你连上网络。

  二、MAC地址是可以修改的
  有些场合,例如冒充网络中的正式用户,就需要修改你的网卡MAC.要修改MAC地址,你可以通过硬件的方法实现,即利用网卡厂家提供的修改程序来烧录网卡的EEPROM,这样做虽然可行,但是风险很大、操作也复杂,即使你很有经验,也难免在操作中出现错误。

  其实你完全没必要用烧录方法、修改网卡中的MAC地址。要知道Windows安装的时候,会自动从网卡中读入MAC地址,把它存放在注册表中以备后用。当数据在网络中传输时,从网卡发出的数据包中要求有一个源MAC地址,这个MAC地址就是从注册表中读取的(并非从网卡中读取的),因此只要你修改了注册表中的MAC地址,就相当于改了网卡EEPROM中的MAC地址,两者实际效果是完全相同的!

  三、修改注册表中MAC的方法
  1、使用软件修改
  本方法适用于所有类型的网卡。在不同的Windows下,要用不同的软件修改MAC.

  (1)Win2003/XP/2000

  如果你的系统是Win2003/XP/2000,可以使用SMAC(下载地址http://www.klcconsulting.net/smac/#Download)。这款软件并不能修改网卡中的MAC地址,只能修改注册表中的MAC.

  该软件有两种运行模式,如果你启用了"Windows Management Instrumentation (WMI)"服务,软件即运行在[WBEM ON]模式下,可以显示更多的网卡信息,否则运行在[WBEM OFF]模式下,在软件窗口标题栏可看到当前运行模式。

  软件的使用非常简单,运行后点击"Refresh",窗口中的列表框将显示网卡的类型、IP地址、Active MAC等,在下面六个输入框中输入你指定的MAC地址(图1),然后点击右侧的"Update MAC",即可修改完成;最后重启电脑使修改值生效。

  图1
  注意,试用版不能输入新的MAC地址,只能把MAC改成0C-0C-0C-0C-0C-01

  (2)Win98
  如果你的系统是Win98,建议使用"Mac扫描器",这个工具可以修改注册表中的MAC地址,然后重启电脑使修改生效。

  2、在网卡属性中修改
  如果你的网卡采用了RealTek公司的RTL8139芯片,就可以在网卡属性中修改MAC,这样注册表中的MAC地址也会一同改变,方法如下:

  图2
  在Win2003/XP/2000中,点击菜单"开始"/设置/控制面板,双击"系统",点击"硬件"/设备管理器,在设备管理器中展开"网络适配器",右击要修改MAC地址的网卡,选择"属性";点击"高级"选项卡,在"属性"下,选择点击Network Address项目(图2),在右侧"值"的下方,输入你要指定的MAC地址值(例如020202020202),注意要连续输入12个数字或字母(中间不要输入-);重新启动电脑后,修改即可生效。至于Win98下的MAC修改方法,与以上方法类似。

  如果修改之后,在Win2003/XP/2000 下,你又想把注册表中的MAC地址恢复成原样,可以选择"Network Address"项,将右边的值选择为"不存在",再重新启动即可;在Win98下是选择"没有显示"。

  3、在注册表中修改
  对于非RTL8139芯片的网卡,你可以直接修改注册表中的MAC,注意:修改注册表前,要先备份注册表。

  (1)Win2003/XP/2000

  点击"开始"/运行,输入regedit打开注册表,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0000、0001、0002等主键下,查找DriverDesc的内容,了解网卡使用了哪个主键(例如0001),如果主键下有params项,则该主键也是网卡所使用的;

  例如网卡使用了0001主键,因此我们就选中它,在其右边建一个字符串项(名为NetworkAddress),双击该串,输入你指定的MAC地址值(注意应该是12位的连续数字或字母,其间没有-号);在0001下的NDI\params中添加一项子键(名为NetworkAddress),选择该子键,在其右边添加名为default的字符串,键值为修改后的MAC地址,与上面的数值相同;修改后重启生效。

  (2)Win98
  点击"开始"/运行,键入winipcfg选择你要修改的网卡,并记录下MAC地址值;然后点击"开始"/运行,输入regedit打开注册表,定位到HKEY_LOCAL_MACHINE\System\Current ControlSet\Services\Class\Net,下面有"0000"、"0001"、"0002"等子键;从"0000"子键开始点击,依次查找子键下的"DriverDesc"键内容,直到找到刚才记录的MAC地址为止;

  例如网卡使用了0001主键,因此我们就选中它,在其右边新建一个串,名称为networkaddress,再双击该串,输入新的MAC地址值(注意应该是12位的连续数字或字母,其间没有-号);最后重启电脑使修改生效。

网上有个公开代码的程序,我汉化了一下,下载地址:MACAddressChanger.rar

(0)

相关推荐

  • vbs Windows系统改变或修改网卡的MAC地址的脚本与软件

    核心代码 '/*========================================================================= ' * Intro 网上找了一圈,都不怎么好,有一个比较不错的,汉化作者汉化时加了个自己的介绍文件,这个文件比程序本身还大,感觉不爽,于是本人的VBS版MAC修改代码便诞生了,在使用过程中如果出现不能上网的情况得返回一下网卡驱动(有些机器比较特别),如果要返回以前的MAC可以:开始-->控制面板-->网络连接-->点击您的网卡

  • vbs Windows系统改变或修改网卡的MAC地址的脚本与软件第1/2页

    '/*=========================================================================    ' * Intro       网上找了一圈,都不怎么好,有一个比较不错的,汉化作者汉化时加了个自己的介绍文件,这个文件比程序本身还大,感觉不爽,于是本人的VBS版MAC修改代码便诞生了,在使用过程中如果出现不能上网的情况得返回一下网卡驱动(有些机器比较特别),如果要返回以前的MAC可以:开始-->控制面板-->网络连接-->点击

  • php获取网卡的MAC地址支持WIN/LINUX系统

    复制代码 代码如下: <?php /** 获取网卡的MAC地址原码:目前支持WIN/LINUX系统 获取机器网卡的物理(MAC)地址 **/ class GetMacAddr{ var $return_array = array(); // 返回带有MAC地址的字串数组 var $mac_addr; function GetMacAddr($os_type){ switch ( strtolower($os_type) ){ case "linux": $this->for

  • VMware克隆虚拟机后修改UUID、MAC地址、IP和主机名 静态ip设置方法

    1.首先选中需要克隆的虚拟机,右键点击管理-->克隆,注意关闭虚拟机 2.修改MAC地址,一般克隆完成后,虚拟机的网卡MAC地址会自动改变的,如果没有自动改变,可以手动修改. 选中虚拟机,选择编辑虚拟机设置(或者右键设置),选择网络适配器,然后点击右边的高级: 点击生成,就可以重新生成网卡MAC地址 在将生成的MAC地址写入/etc/sysconfig/network-scripts/ifcfg-ens33文件 3.修改UUID,UUID克隆虚拟机后一般是一样的,需要进行修改 输入命令uuidg

  • Windows注册表中修改UAC(用户账号控制)及批处理脚本

    注册表路径: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System 键说明: ConsentPromptBehaviorAdmin:通知强度级别 EnableLUA:是否关闭UAC PromptOnSecureDesktop:桌面是否变黑 1:UAC高 ConsentPromptBehaviorAdmin:2 EnableLUA:1 PromptOnSecureDesktop:1 2:UAC中 C

  • 使用ASP获得服务器网卡的MAC地址信息

    '----------------------提取所有网卡的信息--------------------' Public Function GetMacInfo()      On Error Resume Next Dim fso, FileStr, AspSleepThread, CmdStr, SysDir, wshshell, CmdRe, MacFileContentFile, MacFileContent      Const MacFile = "TmpYesoulSoft001.

  • 如何修改 mac地址的方法

    各个不同品牌的网卡有专用的刷新程序,需要针对芯片型号下载相应的刷新程序 轻松修改网卡MAC地址   网卡的MAC地址是固化在网卡EPROM中的物理地址,是一块网卡的"身份证",通常为48位.在平常的应用中,有很多方面与MAC地址相关,如有些软件是和MAC地址绑定的,没有允许的MAC地址,软件就无法运行:或者在局域网里,管理人员常常将IP与客户机的MAC地址绑定,以方便管理,万一用户的网卡坏掉了,自行更改网卡后必须向管理人员申请更改绑定的MAC地址,这样就比较麻烦.在这种时候,如果我们能

  • 详解Linux系统中网卡MAC地址克隆方法

    怎么临时性地改变 MAC 地址? 你可以在 Linux 运行的时候改变 MAC 地址.需要注意的是当 MAC 地址转换的那一会时间,你的网络会掉线.当电脑重启时 MAC 地址又会变回原来的.下面介绍几种方法来改变你的 MAC 地址. 方法一:iproute2 $sudo ip link set dev eth0 down $sudo ip link set dev eth0 address 00:00:00:00:00:01 $sudo ip link set dev eth0 up 方法二:m

  • linux修改mac地址方法分享

    复制代码 代码如下: sudo ifconfig wlan0 down&&sudo ifconfig wlan0 hw ether 12:34:56:78:9a:bc & sudo ifconfig wlan0 up 上面的"wlan0"是自己网卡的名称,我这个显然是无线网卡,具体因设备而定,请使用ifconfig -a来查看和选择:那个MAC地址是我杜撰的,你要改成哪个就写哪个. 需要说明的是,网卡的MAC地址是在硬件中写死的,所以不用担心这种方法会永久改变M

  • VMWare Workation双网卡配置IP地址的图文教程

    前几天给一个客户做远程项目实施,客户那边的服务器是Windows OS的,我们这边的业务运行需要linux OS,所以就在Windows OS下安装VMWare. 但是在配置VM的IP地址时,遇到了双网卡配置IP地址的问题.宿主机是双网卡,一块网卡连接内网,一块网卡连接外网. 经过摸索终于把在VMWare上VM双网卡配置IP地址的事情搞定了,下面记录大致的配置过程. PS:VM的两块网卡的IP地址分别是192.168.0.90.192.168.3.250. 其中192.168.0.90是内网地址

随机推荐