Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Поиск и замена индивидуальных данных в реестре (http://forum.oszone.net/showthread.php?t=169956)

an99dre 12-03-2010 19:52 1367240

Поиск и замена индивидуальных данных в реестре
 
Помогите доработать скрипт или написать новый. Задача такова: 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 1368249

Код:

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 1368253

amel27, ОГРОМНОЕ СПАСИБО.


Время: 21:41.

Время: 21:41.
© OSzone.net 2001-