PDA

Показать полную графическую версию : [решено] Поиск и замена индивидуальных данных в реестре


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

amel27
14-03-2010, 11:45
Const HKLM = &H80000002
Const NetBase = "SYSTEM\CurrentControlSet\Control\Network\"

Set oAdapters = GetObject("winmgmts:").ExecQuery("SELECT * " & _
"FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True")
Set oReg = GetObject("winmgmts:\\.\root\default:StdRegProv")
iRC = oReg.EnumKey(HKLM, NetBase, aRegKeys)

For Each oAdapter In oAdapters
For Each sKey In aRegKeys
sKeyName = NetBase & sKey &"\"& oAdapter.SettingID &"\Connection"
oReg.GetStringValue HKLM, sKeyName, "Name", sValue

If sValue = "Подключение по локальной сети" Then
oReg.SetStringValue HKLM, sKeyName, "Name", "LAN1"
oReg.SetDWORDValue HKLM, sKeyName, "ShowIcon", 1
oReg.SetDWORDValue HKLM, sKeyName, "IpCheckingEnabled", 1
End If
If sValue = "Подключение по локальной сети 3" Then
oReg.SetStringValue HKLM, sKeyName, "Name", "LAN3"
oReg.SetDWORDValue HKLM, sKeyName, "ShowIcon", 1
oReg.SetDWORDValue HKLM, sKeyName, "IpCheckingEnabled", 1
End If
Next
Next

an99dre
14-03-2010, 11:51
amel27, ОГРОМНОЕ СПАСИБО.




© OSzone.net 2001-2012