|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Скрипт для поиска и удаления искомых ключей реестра |
|
VBS/WSH/JS - Скрипт для поиска и удаления искомых ключей реестра
|
Новый участник Сообщения: 4 |
Всем привет. В интернете нашел скрипт:
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
|
Профиль | Отправить PM | Цитировать Например, прав не хватает. Вы проверяли разрешения на перечисленные разделы реестра?
|
Отправлено: 16:28, 29-01-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Iska, права есть. если я запускаю regedit под этой же учеткой, то могу удалить ветки
|
Отправлено: 16:42, 29-01-2014 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Тогда, возможно, удаляемый раздел не пуст — внутри него есть другие разделы.
|
Отправлено: 17:01, 29-01-2014 | #4 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Iska, Да, всё верно. Скрипт не удаляет с подразделами. Можно ли как-то это исправить?
|
|
Отправлено: 08:55, 30-01-2014 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Можно. Рекурсией. Используя Wbem и объект «StdRegProv».
|
Отправлено: 09:02, 30-01-2014 | #6 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Iska, Мда. Еще бы знать как это организовать в коде.
|
Отправлено: 10:49, 30-01-2014 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Так: vbscript stdregprov registry key recursive delete - Поиск в Google. Первой же ссылкой в выдаче.
|
Отправлено: 10:52, 30-01-2014 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Система - Программы для поиска и удаления дубликатов файлов | 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 |
|