Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


Для строковых значений. Как заготовка.
Код: Выделить весь код
' Для совпадающих строке поиска значений (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
Через промежуточный файл для убыстрения.

Последний раз редактировалось SendMessage, 06-08-2011 в 03:51. Причина: Переработка скрипта

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:15, 05-08-2011 | #6