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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Скрипт по изменению реестра

Ответить
Настройки темы
Любой язык - [решено] Скрипт по изменению реестра
T3D T3D вне форума

Новый участник


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

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


Здравствуйте.
Может кто-нибудь подсказать реализацию такого а/р на любом языке:
1) Задаём "переменную для поиска" и переменную для замены (можно правкой вручную, можно с окном запроса);
2) Ищем переменную для поиска в реестре;
3) Заменяем найденную переменную на "переменную для замены";

Заранее благодарен за любую помощь.

Отправлено: 07:59, 04-08-2011

 

Googler


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

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


- предположу, что под "переменной" понимается "параметр" реестра, так?
- и всё-таки: заменяем переменную (через удаление) или только её значение?
- кроме имени нужно обязательно знать тип параметра, например строка: REG_SZ

Отправлено: 11:44, 04-08-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


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

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


Цитата T3D:
3) Заменяем найденную переменную на "переменную для замены" »
И благополучно убиваем 100500 похожих вхождений. Например находим все PATH в HKCU:
Цитата:
> reg query hkcu /v "PATH" /s

HKEY_CURRENT_USER\Environment
PATH REG_SZ C:\Users\Dmitry\BIN;C:\Users\Dmitry\BIN\POSH;C:\Users\Dmitry\BIN\GNU\bin

HKEY_CURRENT_USER\Software\7-Zip
Path REG_SZ C:\Program Files\7-Zip\

HKEY_CURRENT_USER\Software\Sysinternals\Process Explorer
Path REG_SZ c:\Users\Dmitry\BIN\SYSINTERNALS\procexp64.exe

Поиск завершен: найдено совпадений: 3.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:10, 04-08-2011 | #3

T3D T3D вне форума Автор темы

Новый участник


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

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


Цитата amel27:
- предположу, что под "переменной" понимается "параметр" реестра, так? »
Так.
Цитата amel27:
- и всё-таки: заменяем переменную (через удаление) или только её значение? »
Только значение
Цитата Foreigner:
И благополучно убиваем 100500 похожих вхождений. Например находим все PATH в HKCU: »
Искаться будет уникальный IP-адрес, так что ничего лишнего не удалиться

Отправлено: 05:48, 05-08-2011 | #4


Ветеран


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

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


Цитата T3D:
Искаться будет уникальный IP-адрес, так что ничего лишнего не удалиться »
Ставь задачу конкретней. Подозреваю, что искать надо не по всему реестру, может даже искать не надо, а заранее известен раздел\ключ\параметр ( или сократить область поиска до раздел\ключ ) и надо только узнать/поменять его значение.

Отправлено: 08:21, 05-08-2011 | #5


Старожил


Сообщения: 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Скрипт по изменению реестра

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Не работает скрипт удаления из реестра Nun-Nun Скриптовые языки администрирования Windows 2 03-01-2011 12:57
Вопросы о создании автоматической установки и изменению дистрибутива. ale321 Автоматическая установка Windows 2000/XP/2003 3 09-10-2010 11:01
Вопрос по изменению сборки Windows XP Manuka1973 Хочу все знать 2 08-09-2008 08:20
Доступ - [решено] Нет доступа к изменению настроек системы Astena Microsoft Windows 2000/XP 10 05-07-2008 09:21
Ограничение доступа к изменению времени nod201 Автоматическая установка Windows 2000/XP/2003 15 29-01-2007 23:20




 
Переход