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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Скрипт для поиска и удаления искомых ключей реестра

Ответить
Настройки темы
VBS/WSH/JS - Скрипт для поиска и удаления искомых ключей реестра

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


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

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


Всем привет. В интернете нашел скрипт:

Код: Выделить весь код
Option Explicit
Dim sSearchFor, st, st0, sRegTmp, sOutTmp, eRegLine, iCnt, sRegKey, aRegFileLines, stroca, isDel, delLine, delLines, resbox
Dim wssh : Set wssh = CreateObject("WScript.Shell")
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")

sSearchFor = InputBox("Введите в поле искомое слово." &vbcrlf&vbcrlf& "Задавая искомую фразу, будьте осторожны: Убедитесь в уникальности имени удаляемого параметра...", "Реестр | fate (modified by Lucky)")
If sSearchFor = "" Then Cleanup()
 
Dim StartTime : StartTime = Timer
 
sRegTmp = wssh.Environment("Process")("Temp") & "\RegTmp.tmp "
sOutTmp="RegDel "&sSearchFor&".txt"

wssh.Run "regedit /e /a " & sRegTmp, , True 
aRegFileLines = Split(FSO.GetFile(sRegTmp).OpenAsTextStream(1, 0).Read(FSO.GetFile(sRegTmp).Size), vbcrlf) 'делим текст данных на строки
FSO.DeleteFile(sRegTmp)

Dim txt : Set txt = fso.OpenTextFile(sOutTmp,2,True)
txt.WriteLine "<fate (modified by Lucky) | Реестр>"
txt.WriteLine "<Ниже перечислены найденные ветки>"&vbcrlf&"<Вы можете удалить здесь те строки, которые хотели бы оставить в реестре...>"

For Each eRegLine in aRegFileLines
On Error Resume Next
  If InStr(1, eRegLine, "[", 1) > 0 Then         'проверяем: это раздел (если есть [) или параметр.
    sRegKey = eRegLine
  end if
  If InStr(1, eRegLine, sSearchFor, 1) >  0 Then 'если в строке найдено искомая фраза, работаем с ней:
    If sRegKey <> eRegLine Then
      st0=Split(eRegLine,"=")           'делим пераметр на то что левее "=" (имя) и правее "=" (значение)
      st=Replace(st0(0),"""","")        'берем лишь имя параметра для построения пути
      stroca=Mid(sRegKey,2)
      stroca=Replace (stroca,"]","",1)  'исключяем знаки ] из строки Раздела
      txt.WriteLine stroca &"\"& st     'запись строки в обрабатываемый файл
    else
      stroca=Mid(sRegKey,2) 
      stroca=Replace (stroca,"]"," ",1)
      stroca =Trim(stroca)
      txt.WriteLine stroca & "\"        'запись строки в обрабатываемый файл
    End If
    iCnt = iCnt + 1
  End If
Next

txt.Close
Erase aRegFileLines
 
If iCnt < 1 Then
  wssh.Popup "Поиск длился  " & FormatNumber(Timer - StartTime, 0) & " сек. " & _
             "По запросу " & chr(34) & sSearchFor & chr(34) & _
             " ничего не найдено.",, "Реестр | fate (modified by Lucky)", 4096
  FSO.DeleteFile(sOutTmp)
  Cleanup()
End If
 
wssh.Popup "Поиск длился " & FormatNumber(Timer - StartTime, 0) & " сек. " & _
          iCnt & " совпадений по запросу " & chr(34) & sSearchFor & chr(34),, _
          "Реестр | fate (modified by Lucky)", 4096
 
wssh.Run "NotePad " & sOutTmp, 3, True 'открытие NotePad с отчётом об удалении

delLines = Split(FSO.OpenTextFile(sOutTmp,1).ReadAll, vbcrlf)
For Each delLine in delLines
  if Left(delLine,1)<>"<" then
   Err.Clear
   wssh.RegDelete delLine                   'удаление строки в реестре
   If Err.Number<>0 then
      Err.Clear : wssh.RegRead delLine
      if Err.Number=0 then
        resbox=resbox&delLine&vbCrLf&vbCrLf
      end if
   End if
  end if
Next
if resbox<>"" then resbox="Следующие строки удалить не удалось:"&vbCrLf&resbox

isDel=wssh.Popup(resbox&"Хотите сохранить файл отчета удаляемых строк?",, _
                 "Отчёт | fate (modified by Lucky)", 36)
if isDel=7 then FSO.DeleteFile(sOutTmp)
Cleanup()
 
Sub Cleanup()
  Set wssh = Nothing
  Set FSO = Nothing
  WScript.Quit
End Sub
Со следующим функционалом:
1. Запрос искомой фразы для поиска.
2. Вывод результатов в окне Блокнота с возможностью исключения параметров по желанию пользователя.
3. Сохранение файла отчёта в текущей директории по выбору пользователя.

Всё вроде бы нормально, скрипт отрабатывает






но....
Почему он не удаляет ветки?!
Скрипт запускаю под учеткой админа.
В vbs плохо разбираюсь. Хэлп

Отправлено: 16:25, 29-01-2014

 

Ветеран


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

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


Например, прав не хватает. Вы проверяли разрешения на перечисленные разделы реестра?

Отправлено: 16:28, 29-01-2014 | #2



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

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


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


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

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


Iska, права есть. если я запускаю regedit под этой же учеткой, то могу удалить ветки

Отправлено: 16:42, 29-01-2014 | #3


Ветеран


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

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


Тогда, возможно, удаляемый раздел не пуст — внутри него есть другие разделы.

Отправлено: 17:01, 29-01-2014 | #4


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


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

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


Iska, Да, всё верно. Скрипт не удаляет с подразделами. Можно ли как-то это исправить?

Отправлено: 08:55, 30-01-2014 | #5


Ветеран


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

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


Можно. Рекурсией. Используя Wbem и объект «StdRegProv».

Отправлено: 09:02, 30-01-2014 | #6


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


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

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


Iska, Мда. Еще бы знать как это организовать в коде.

Отправлено: 10:49, 30-01-2014 | #7


Ветеран


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

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


Так: vbscript stdregprov registry key recursive delete - Поиск в Google. Первой же ссылкой в выдаче.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:52, 30-01-2014 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Скрипт для поиска и удаления искомых ключей реестра

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - Программы для поиска и удаления дубликатов файлов Alex Cop Программное обеспечение Windows 61 07-01-2018 12:00
CMD/BAT - [решено] CMD-скрипт для удаление пустых ключей реестра ADSL3MD Скриптовые языки администрирования Windows 4 20-09-2011 19:16
VBS/WSH/JS - Помогите улучшить скрипт для поиска и удаления файлов UpDaTe Скриптовые языки администрирования Windows 4 23-03-2011 04:33
CMD/BAT - [решено] Не работает скрипт удаления из реестра Nun-Nun Скриптовые языки администрирования Windows 2 03-01-2011 12:57
CMD/BAT - [решено] CMD\BAT для сохранения ключей реестра. belohortvladimir Скриптовые языки администрирования Windows 5 14-06-2010 14:01




 
Переход