an99dre
12-03-2010, 19:52
Помогите доработать скрипт или написать новый. Задача такова: XP3, существует несколько сетевых адаптеров, не обязательно подключённых к сети, необходимо найти все сетевые подключения ("Подключение по локальной сети" и "Подключение по локальной сети 2") и переименовать их по заранее введённым в скрипт именам. Включить "При подключении вывести значок в области уведомлений" и "Уведомлять при ограниченном или отсутствующем подключении". Приведённый скрипт делает всё, кроме переименования. Как изменить? Всё должно проходить без запросов.
' use "." for local computer
sComputer = "."
'Constants for WMI StdRegProv
Const HKCR = &H80000000
Const HKCU = &H80000001
Const HKLM = &H80000002
Const NetBase = "SYSTEM\CurrentControlSet\Control\Network\"
On Error Resume Next
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & sComputer & "\root\default:StdRegProv")
' Finding the right place in registry is not so easy
' You must find the SettingID for the correct network adapter
' Get adapter collection
Set oAdapters = GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True")
' Get all subkeys under NetBase in an array
iRC = oReg.EnumKey(HKLM, NetBase, aRegKeys)
' Поиск адаптера с именем подключения "Подключение по локальной сети"
' или с именем "Подключение по локальной сети 2"
If (Err.Number = 0) And (iRC = 0) Then
On Error Goto 0
bAdapterFound = False
For Each oAdapter In oAdapters
sSettingID = oAdapter.SettingID
' Loop through all registry keys
For i = 0 To Ubound(aRegKeys)
sKeyName = NetBase & aRegKeys(i) & "\" & sSettingID & "\Connection"
oReg.GetStringValue HKLM, sKeyName, "Name", sValue
If sValue = "Подключение по локальной сети" or sValue = "Подключение по локальной сети 2" Then
'' bAdapterFound = True
' WScript.Echo "Updating this setting id: " & sSettingID
' WScript.Echo "Registry path: " & sKeyName
' Now we can get to the network icon setting in registry
oReg.SetDWORDValue HKLM, sKeyName, "ShowIcon", 1
' Если надо то можно еще тамже снять галочку с "Уведомлять при ограниченном или отсутствующем подключении"
' нужно добавить после строки (или перед-не важно) oReg.SetDWORDValue HKLM, sKeyName, "ShowIcon", 1
' строку oReg.SetDWORDValue HKLM, sKeyName, "IpCheckingEnabled", 0
'' Exit For
End If
Next
If bAdapterFound Then
Exit For
End If
Next
' WScript.Echo "Finished, you must log off and on to see the change"
Else
WScript.Echo "Error in WMI registry parsing!"
End If
' use "." for local computer
sComputer = "."
'Constants for WMI StdRegProv
Const HKCR = &H80000000
Const HKCU = &H80000001
Const HKLM = &H80000002
Const NetBase = "SYSTEM\CurrentControlSet\Control\Network\"
On Error Resume Next
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & sComputer & "\root\default:StdRegProv")
' Finding the right place in registry is not so easy
' You must find the SettingID for the correct network adapter
' Get adapter collection
Set oAdapters = GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True")
' Get all subkeys under NetBase in an array
iRC = oReg.EnumKey(HKLM, NetBase, aRegKeys)
' Поиск адаптера с именем подключения "Подключение по локальной сети"
' или с именем "Подключение по локальной сети 2"
If (Err.Number = 0) And (iRC = 0) Then
On Error Goto 0
bAdapterFound = False
For Each oAdapter In oAdapters
sSettingID = oAdapter.SettingID
' Loop through all registry keys
For i = 0 To Ubound(aRegKeys)
sKeyName = NetBase & aRegKeys(i) & "\" & sSettingID & "\Connection"
oReg.GetStringValue HKLM, sKeyName, "Name", sValue
If sValue = "Подключение по локальной сети" or sValue = "Подключение по локальной сети 2" Then
'' bAdapterFound = True
' WScript.Echo "Updating this setting id: " & sSettingID
' WScript.Echo "Registry path: " & sKeyName
' Now we can get to the network icon setting in registry
oReg.SetDWORDValue HKLM, sKeyName, "ShowIcon", 1
' Если надо то можно еще тамже снять галочку с "Уведомлять при ограниченном или отсутствующем подключении"
' нужно добавить после строки (или перед-не важно) oReg.SetDWORDValue HKLM, sKeyName, "ShowIcon", 1
' строку oReg.SetDWORDValue HKLM, sKeyName, "IpCheckingEnabled", 0
'' Exit For
End If
Next
If bAdapterFound Then
Exit For
End If
Next
' WScript.Echo "Finished, you must log off and on to see the change"
Else
WScript.Echo "Error in WMI registry parsing!"
End If