ConvRegToAu3 (конвертер reg-файлов в коды AutoIt)

ConvRegToAu3

Описание:

Небольшая утилита для преобразования reg-файлов в AutoIt-коды (RegWrite и RegDelete). Написана при помощи все того же AutoIt-а.

 

Возможности:

 

Особенности:

Несколько медленная работа с большими файлами.
675Кб reg-файл ветки HKLM\SYSTEM\CurrentControlSet\Services, выбранной для тестов, обрабатывается около 30 сек. на Athlon XP ThoroughBred-B 1500MHz. Я не считаю этот момент проблемой, т.к. конвертер предназначен не для преобразования реестра (что также возможно, но бессмысленно), а для дополнения AutoIt-скриптов установок приложений их настройками из reg-файлов. Обычно же, reg-файлы с настройками приложений имеют размер до ста килобайт, а такие файлы конвертируются всего за несколько секунд. Такая нелинейная зависимость связана с обработкой массивов самим AutoIt-ом.

 

Ограничения:

Конвертируемые reg-файлы должны быть не в Unicode, а в DOS или WIN кодировке
(первая строка таких reg-файлов содержит текст REGEDIT4). Другими словами, входной файл должен быть простым ("plain") текстом.
Для этого, на этапе экспорта данных в reg-файл, используйте команду:

regedit /ea имя_файла.reg ветка_реестра

Например, для экспорта настроек архиватора 7-Zip в reg-файл формата plain-text нужно выполнить такую команду:

regedit /ea 7z.reg HKEY_CURRENT_USER\Software\7-zip

При ручном экспорте выбирайте тип файла реестра Win9x/NT4.

Начиная с версии 2006-05-22 в crta встроен маленький перекодировщик (7193 bytes; написан на C++) UTF-16 LE BOM, UTF-16 BE BOM, UTF-8 BOM в ANSI (она же WIN) кодировку. Учитывая тот факт, что в NT-подобных системах regedit по ум. экспортирует reg-файлы в кодировке UTF-16 LE BOM, можно говорить о самодостаточности crta.

!!! ВАЖНОЕ ЗАМЕЧАНИЕ !!! В сл. Unicode-формата входного файла в алгоритме самого crta предусмотрена специфическая обработка параметров типа "REG_MULTI_SZ" [hex(7)]. Дело здесь в том, что regedit (при сохранении reg-файла в Unicode) в параметрах типов "REG_EXPAND_SZ" [hex(2)] и "REG_MULTI_SZ" [hex(7)] к каждому байту добавляет лишний нулевой байт. Для "REG_EXPAND_SZ" нужды в доп. обработке не возникает, т.к. там нулевые байты недопустимы по определению и они просто все обрезаются, а в "REG_MULTI_SZ" нулевой байт - это перевод строки, и, дабы не исказить исходные данные, приходится производить доп. манипуляции. К чему я это все здесь пишу? Да к тому, чтобы Вы не "скормили" конвертеру изначально экспортированный в ANSI reg-файл по какой-то загадочной причине сохраненный после этого в Unicode. Это же замечание относится и к файлам уже перекодированным из Unicode в ANSI при помощи какой-то другой проги. В результате конвертации подобных файлов, в au3-скрипте Вы получите целый букет лишних переводов строк @LF.

 

Использование:

crta [путь\]файл-источник [путь\файл-результат] [/ключ]

[ ] - необязательный параметр

 

Ключи командной строки:

/a - преобразовывать абсолютные пути в относительные [/a1 - выполнить только преобразование путей в au3-файле (входным файлом должен быть au3-скрипт); /a2 - постобработка au3-скрипта]

/b - показывать индикатор выполнения

/c - после конвертации поместить содержимое выходного файла в буфер обмена (по ум. буфер обмена не используется)

/d - перезаписать существующий файл-результат (по ум. он будет дописан; файл - !reg_au3_add.au3)

/f - отключить исправление ошибок в строковых параметрах содержащих "возврат каретки" внутри (regedit.exe при экспорте таких параметров в reg-файл ошибается)

/h - копировать в буфер обмена только результат последней конвертации (текущее содержимое результирующего файла пропускается; используйте совместно с ключом /c)

/l - записывать ошибки, предупреждения и др. информацию в лог файл (/l1 - только ошибки и предупреждения; /l2 - ошибки, предупреждения и др. инф-цию)

/p - приоритет процесса конвертера (/p0 - Idle/Low; /p1 - Below Normal; /p2 - Normal; /p3 - Above Normal; /p4 - High; /p5 - Realtime)

/r - отмена импорта в реестр пустых параметров типа "REG_MULTI_SZ" [hex(7):00,00 и hex(7):00] c пом. команды REG ADD (сам AutoIt не умеет этого делать - все подобные строки превращаются в аналог hex(7):00,00,00)

/u - отключить распознавание вх. Unicode-файлов и их преобразование в ANSI.

 

Также существует возможность конфигурирования посредством ini-файла (см. комментарии в файле crta.ini в архиве с программой). Файл crta.ini должен лежать в одном каталоге с crta.exe. Ключи командной строки, как и положено, имеют больший приоритет, чем параметры ini-файла.

 

Download (build 2006-08-23; 146907 bytes; history)

< На главную

 

Рейтинг@Mail.ru
X