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

'/*=========================================================================   
' * 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  

当前1/2页 12下一页阅读全文

时间: 2024-10-27 17:43:30

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

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

复制代码 代码如下: <?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

C#取得设备网卡的MAC地址和硬盘的卷标号

硬盘 ( 一 ).说明取得设备网卡的MAC地址和硬盘的卷标号( 二 ).图片示例 ( 三 ).代码using System;using System.Management;namespace NetCard{/// <summary> /// 读取设备 /// </summary> public class run {private ManagementClass mc; private ManagementObjectCollection moc; private Managem

VC获取物理网卡的MAC地址

获取网卡的MAC地址的方法很多,如:Netbios,SNMP,GetAdaptersInfo等.经过测试发现 Netbios 方法在网线拔出的情况下获取不到MAC,而 SNMP 方法有时会获取多个重复的网卡的MAC,试来试去还是 GetAdaptersInfo 方法比较好,网线拔出的情况下可以获取MAC,而且很准确,不会重复获取网卡. GetAdaptersInfo 方法也不是十全十美,也存在些问题: 1)如何区分物理网卡和虚拟网卡: 2)如何区分无线网卡和有线网卡: 3)"禁用"的网

win7系统如何查看局域网IP与MAC地址?

  win7系统如何查看局域网IP与MAC地址? 1.网络图标处右键,单击属性; 2.在打开的"网络和共享中心"窗口,选择左侧的"更改适配器设置"; 3.在"无线网络连接"图标上双击,在打开的"无线网络连接"处点击"详细信息"; 4.此时就可查看到IP 地址与MAC地址了.

[急]用VB.NET 在win7系统下如何获取本机mac地址

问题描述 用VB.NET在win7系统下如何获取本机mac地址XP系统如下代码是OK的,在Win7系统中获取不了.DimWmiAsNewSystem.Management.ManagementObjectSearcher("SELECT*FROMWin32_NetworkAdapterConfiguration")ForEachWmiObjAsManagement.ManagementObjectInWmi.GetIfCBool(WmiObj("IPEnabled"

Windows系统如何添加虚拟网卡?

  虚拟网卡在做网络实验的时候挺有用的,比如用模拟器的时候,想把自己的电脑当作TFTP服务器的时候就要用到虚拟网卡. 下面是在Windows 2003下添加虚拟网卡的步骤: 1.开始-->设置-->控制面板-->添加硬件: 第二步:选择是,硬件已连接好. 第三步:下拉到最后,选择添加新的硬件设备. 第四步:选择"安装我手动从列表选择的硬件(高级)M". 第五步:下拉到后面,选择"网络适配器". 第六步:从左边选择"Microsoft&qu

Windows下查看同局域网其它主机MAC地址

  事情是这样的,今天去面试的时候笔试有一道题问到:Windows下使用什么命令来获知同局域网内其他主机的MAC地址.一开始看到感觉很熟悉,但是却答不上来.原来建站这么就,很多使用都要使用ping命令来测试网站的可连接性和速度等等. 但是这样的ping命令并不可以看到一台主机的MAC地址.其实Windows下有一个arp的命令就可以获知局域网中其他主机的MAC地址已经IP地址的. arp -a ( 显示 ARP 表) 还有其他参数: -a 通过询问当前协议数据,显示当前 ARP 项.如果指定 i

win7 64位系统下无线网卡改不了MAC地址的解决方法

本人用的无线网卡是intel 1000,用了很多方法都无法修改其MAC地址(显示的是修改成功的,但在网络连接状态中你会发现还是原来的MAC),后来发现以太网的网卡(也就是本地连接)是可以修改成功的,于是,你只需要把本地连接的MAC修改,再在适配器管理中按住Ctrl键将无线连接和本地连接都选定,点右键,桥接,一切OK! 并不是修改的所有的mac都能用的只有满足以下条件的才能用:mac地址的第二位只能修改成(2,6,A,E)这四个才会生效.

贡献PHP获取网卡的MAC地址

<?php/**获取机器网卡的物理(MAC)地址 wwa $Exp **/class GetMacAddr{var $return_array = array(); // 返回带有MAC地址的字串数组var $mac_addr; function GetMacAddr($os_type){switch ( strtolower($os_type) ){case "linux":$this->forLinux();break;case "solaris":