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
注意:
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
相关文章推荐
- Win7如何修改和删除多余的网络连接名称如本地连接2网络2等
- 修改“本地连接”的名称
- VBS修改本地连接MAC地址
- 修改本地计算机连接的名称
- Windows 7本地网卡更改过出现本地连接2无法修改名称解决方法
- win7禁用启用本地连接bat及vbs
- 烂泥:mysql修改本地主机连接
- win7 批处理自动 修改本地IP地址、无线IP地址.bat
- PostgreSQL 断开所有连接用户、删除数据库、修改表名称
- Win7如何快速打开本地连接
- Win7为什么会有很多的本地连接如何更改其序号
- 烂泥:mysql修改本地主机连接
- 如何更改 Win7 网络连接显示名称
- Win7远程3389端口被修改导致无法连接的问题
- 如何限制修改IP地址;如何禁止显示的本地连接属性
- 批量修改文件名称( 收藏的一个连接)
- 修改win7系统本地连接 MTU值方法
- SQL Server 修改默认端口后,同步复制时的名称连接问题
- windows版本判断+启用禁用本地连接+修改mac地址
- Java批量修改本地Mp3的名称为Mp3Tag中的歌名