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

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

Ответить
Настройки темы
VBS/WSH/JS - Удаление строк в REG файле

Аватара для gen0m.rsw

Пользователь


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

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


"Плотно сижу" на Advanced Installer, естественно приходится добавлять записи в реестр, вот какая проблема!
После экспорта/сохранения из многих программ получается примерно такие reg-файлы (пример)

[HKEY_LOCAL_MACHINE\SOFTWARE]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers]
@="1"


При импорте в Advanced Installer енто недопустимо(ошибки при удалении)
Хотелось бы что в файле реестра удалялись , так называемые пустые разделы, кроме последнего( и конечно параметры).
А то приходиться руками чистить(бывало reg-файл доходил до 2500 строк )

Отправлено: 00:51, 26-09-2011

 

Ветеран


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

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


gen0m.rsw, ближе к вечеру (по MSK) выложу.

Сразу уточню:

1) файл реестра валидный — сигнатура:
Код: Выделить весь код
Windows Registry Editor Version 5.00

…
наличествует?

2) работать будем только с пятой версией или потребуется поддержка и старой:
Код: Выделить весь код
REGEDIT4

…
версии?

Отправлено: 10:02, 26-09-2011 | #2



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

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


Старожил


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

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


Если я правильно понял задачу:

читать дальше »
Файл считывается полностью. В оправдание могу сказать, что скрипт нормально отработал на файле, включающем в себя весь реестр.
Код: Выделить весь код
Option Explicit

Dim objRegExp
Dim objFSO
Dim RegFile
Dim strText
Dim strFileName
Dim BOM
Dim valFormat

strFileName = "z:\tmp\1.reg"

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set RegFile = objFSO.OpenTextFile(strFileName)
  BOM = RegFile.Read(2)
RegFile.Close

If BOM = Chr(&HFF) & Chr(&HFE) Then
  valFormat = -1
Else
  valFormat = 0
End If

Set RegFile = objFSO.OpenTextFile(strFileName, 1, False, valFormat)
  strText = RegFile.ReadAll
RegFile.Close
  
Set objRegExp = New RegExp

With objRegExp
  .Global = True
  .IgnoreCase = True
  .Pattern = "\[HKEY_.+?\](?:\r\n)+(?=\[HKEY_|$)"
  strText = .Replace(strText, "")
End With

Set RegFile = objFSO.OpenTextFile(strFileName & "_", 2, True, valFormat)
  RegFile.Write strText
RegFile.Close

Set RegFile = Nothing
Set objFSO = Nothing
Set objRegExp = Nothing

WScript.Echo "Обработка завершена."

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

Отправлено: 16:29, 26-09-2011 | #3


Ветеран


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

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


SendMessage, вечером сравним результаты .

Отправлено: 17:54, 26-09-2011 | #4


Аватара для gen0m.rsw

Пользователь


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

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


Iska
Енто я понял, просто не хотел писать лишнего, кто знает тот поймёт!!!
Windows Registry Editor Version 5.00 (Енто понятно что не дописал!!)

SendMessage, не могли ты объяснить вкратце как им пользоваться???
Цитата SendMessage:
Файл считывается полностью »
Да!

Надеюсь меня MODER-ы простят, забыл как в "личку" писать(ПОМОГИТЕ), хотелось бы дать какой нибудь "ЖЕСТОКИЙ" оригинал для ТЕСТА, если не против!!!

Отправлено: 22:38, 26-09-2011 | #5


Старожил


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

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


Цитата gen0m.rsw:
не могли ты объяснить вкратце как им пользоваться??? »
В строку
Код: Выделить весь код
strFileName = "z:\tmp\1.reg"
вместо z:\tmp\1.reg вставьте нужный Вам рег-файл. Запустите и смотрите результат (файл не перезапишется, а рядом с ним будет создан файл с тем же именем и расширением REG_ - это и будет отредактированный файл). Да, если не знаете, тот код, что я написал, сохраните в текстовом редакторе с расширением VBS. Его можно запустить двойным кликом. Скрипт написан для тестирования Вами. Потом можно переделать для удобного запуска из комстроки или как Вам угодно.
Цитата gen0m.rsw:
Цитата SendMessage:
Файл считывается полностью »
Да! »
Я имел в виду, что скриптом редактируемый файл полностью загружается в память, а не читается последовательными блоками.
Цитата gen0m.rsw:
Енто я понял, просто не хотел писать лишнего, кто знает тот поймёт!!!
Windows Registry Editor Version 5.00 (Енто понятно что не дописал!!) »
Из приведенного Вами куска рег-файла совсем не следует, что он 5 версии. А разница между ними для обработки скриптом большая - новый в юникоде, а старый в ASCII.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:41, 27-09-2011 | #6


Ветеран


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

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


SendMessage, работает.

Я не сообразил подходящего регулярного выражения, делал построчным чтением. Разница в результатах на четыре байта (в длине, не в содержимом) при оригинале ~310 тысяч строк (HKCR цельным куском) . В скорости мой вариант намного медленнее. Уже посему, думаю, выкладывать не стоит.

Снимаю шляпу!

Отправлено: 14:48, 27-09-2011 | #7


Аватара для gen0m.rsw

Пользователь


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

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


SendMessage, респеск!!!
Пока глюков не было!

Отправлено: 14:39, 28-09-2011 | #8


Аватара для gen0m.rsw

Пользователь


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

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


SendMessage, возникла ещё проблемка по поводу дубликатов!

[HKEY_LOCAL_MACHINE\SOFTWARE\ProXima\comedy\1.0]
"Editor"="notepad.exe"
"chain"=dword:00000000
"ignore"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\ProXima\comedy\1.0]
"Editor"="notepad.exe"


Попадаются одинаковые разделы и параметры, нельзя енто как до править в существующем VBS ?

Отправлено: 15:02, 28-09-2011 | #9


Ветеран


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

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


gen0m.rsw, ручной путь подсказать (нужна будет установка стороннего приложения)?

Отправлено: 18:03, 28-09-2011 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление строк в текстовом файле, как это сделать??? VladZombie Скриптовые языки администрирования Windows 70 08-09-2020 13:28
CMD/BAT - [решено] Поиск, удаление, замена и добавление строк в текстового файле. Что возможно? akrav Скриптовые языки администрирования Windows 8 06-12-2015 13:22
CMD/BAT - [решено] Удаление строк в файле, начинающихся с переменной 2ooth Скриптовые языки администрирования Windows 3 31-08-2011 13:44
[решено] Количество строк в файле 0xDEADBEEF AutoIt 3 25-01-2010 21:47
[решено] Формат комментариев в REG-файле truvo Хочу все знать 13 30-03-2009 17:16




 
Переход