您的位置:首页 > 编程语言 > VB

win7中vbs修改本地连接名称

2018-02-12 18:41 344 查看
背景:win7系统有2个网口,但是本地连接的名称顺序与其不一致,此脚本可实现逻辑顺序与物理顺序一致的功能。比如Lan1 为本地连接,Lan2为本地连接2.因为设备较多,特输出脚本。

注意:

1.修改名称时需要以管理员身份运行。可通过已管理员身份启动cmd,然后在cmd中运行vbs。

2.经确认所有设备的 lan1的 PnpInstanceID  均相同,根据此值找到逻辑eth0,并命名为 本地连接。另外一个修改为 本地连接2.

实现思路:

1. 通过 For Each NC In CreateObject("Shell.Application").NameSpace(49).Items 分别获取 网络适配器的名称,即本地连接的名称。

2. 遍历 SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318} 的下一级目录,在其中找到Connection的路径。

3.分别获取Connection的 name,PnpInstanceID 的键值。如果name的键值与步骤1中的适配器名称对应,则保持其注册表路径,PnpInstanceID,name。

4.如果PnpInstanceID 包含Const中的常量值,则认为是“本地连接”,否则为本地连接2.

'---以下为vbs脚本-----

Const  ETH0 = "3&11583659&0&FE"

myLog = "D:\x.txt"

strComputer = "."

Set WshShell = WScript.CreateObject("WScript.Shell")

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

strKeyRoot = &H80000002

Regpath = "HKEY_LOCAL_MACHINE"

strKeyPath = "SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}"

oReg.EnumKey strKeyRoot, strKeyPath, arrSubKeys

Dim regArrPath(1)

Dim regArrName(1)

Dim regArrPnp(1)

myStr = ""

i = 0

On Error Resume Next

For Each subkey In arrSubKeys

    ArrSubKeyStr=ArrSubKeyStr & vbcrlf & subkey

    CurRegPath = Regpath & "\" & strKeyPath & "\" & subkey & "\Connection"

    NameValue = WshShell.RegRead(CurRegPath & "\name")

    if 0 = Err.Number then  

        For Each NC In CreateObject("Shell.Application").NameSpace(49).Items

          if NC.name = NameValue then

              regArrPath(i) = CurRegPath

              regArrName(i) = NameValue

              regArrPnp(i) = WshShell.RegRead(CurRegPath & "\PnpInstanceID")

              i = i + 1

          end if      

        Next

    else

        Err.Number = 0

        NameValue = ""

    end if

Next

on error goto 0

 

 

For i = 0 to ubound(regArrPnp)

    if instr(regArrPnp(i),ETH0) > 0 then

        msgbox "本地连接 " & regArrName(i) & chr(10) & "Pnp: " & regArrPnp(i) &  chr(10) & "path: " & regArrPath(i)

        'msgbox "本地连接 --> " & regArrName(i)

        AppendNotepad myLog ,"本地连接 " & regArrName(i) & chr(10) & "Pnp: " & regArrPnp(i) &  chr(10) & "path: " & regArrPath(i)

        WshShell.RegWrite regArrPath(i) & "\Name","本地连接","REG_SZ"

    

    else

        msgbox "本地连接2 " & regArrName(i) &  chr(10) & "Pnp: " & regArrPnp(i)&  chr(10) & "path: "& regArrPath(i)

        'msgbox "本地连接2 --> " & regArrName(i)

        AppendNotepad myLog , "本地连接2 " & regArrName(i) &  chr(10) & "Pnp: " & regArrPnp(i)&  chr(10) & "path: "& regArrPath(i)

        WshShell.RegWrite regArrPath(i) & "\Name","本地连接 2","REG_SZ"

    end if

next
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息