Для строковых значений. Как заготовка.
Код:
' Для совпадающих строке поиска значений (REG_SZ)
Option Explicit
Dim SectionName
Dim tmpRegFile
Dim FindValue
Dim AddValue
Dim objWSS
Dim objFSO
Dim RegFile
Dim CurrSection
Dim GetLine
Dim KeyName
Dim strPrompt
Dim ReturnValue
SectionName = "HKEY_CURRENT_USER\Software"
tmpRegFile = "z:\tmp.reg"
FindValue = "Строка поиска"
AddValue = "Строка замены"
Set objWSS = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
objWSS.Run "regedit /e " & tmpRegFile & " """ & SectionName & """", 2, True
Set RegFile = objFSO.OpenTextFile(tmpRegFile, 1, True, -1)
Do While RegFile.AtEndOfStream <> True
GetLine = RegFile.ReadLine
If Left(GetLine, 6) = "[HKEY_" Then
CurrSection = Mid(GetLine, 2, Len(GetLine) - 2)
Else
If InStr(GetLine, FindValue) Then
strPrompt = "Вы желаете заменить значение ключа " & GetLine & vbNewLine & _
"в разделе " & CurrSection & vbNewLine & _
"на значение """ & AddValue & """?"
ReturnValue = MsgBox(strPrompt, 35, "Замена в реестре")
If ReturnValue = 6 Then
KeyName = Replace(Split(GetLine, "=")(0), """", "")
If KeyName = "@" Then KeyName = ""
objWSS.RegWrite CurrSection & "\" & KeyName, AddValue, "REG_SZ"
ElseIf ReturnValue = 2 Then
Exit Do
End If
End If
End If
Loop
RegFile.Close
'Следующая строка закомментирована для возможности отката изменений
'objFSO.DeleteFile tmpRegFile
Set objWSS = Nothing
Set objFSO = Nothing
MsgBox "Скрипт завершил работу"
WScript.Quit
Через промежуточный файл для убыстрения.