![]() |
Удаление строк из регфайла...
Очень похоже, что трудная тема и даже если имеет решение, то какое нибудь экзотическое, но всёравно спрошу.
Во-первых, как можно объединить контент двух регфайлов, здесь сразу же возникает проблемма удаления одного из лишних заголовков? Код:
Windows Registry Editor Version 5.00 Формат хочу сохранить традиционный, поэтому юзаю стандартный (microsoft) reg.exe export [ key + subkey ] file.reg Можно ли удалить все строки исключив избранные($var) , причём фильтровать нужно по именам параметров, так как не гарантированно, что они в алфавитном порядке идут, и надо как-то узнать конец для строк значений, ибо возможны переносы \ в MULTI_SZ Но если возможно, то на первый случай хотябы только DWORD, STRING и EXPAND_SZ обработать, так как более сложные реже встречаются в HKEY\SOFTWARE практически. Но для более общего случая очень бы хотелось, чтоб всё было. И ещё надо удалить ненужные пустые разделы-заголовки... Типа те которые не содержут параметров вообще... Код:
[HKEY_LOCAL_MACHINE\Software\a] на месте строк не оставались. ??? --- Я даже приведу пример, чтоб было наглядно, хотя это более сложный случай, так как экспортировать весь HCCR это слишком накладно, чтоб потом его разбирать, но зато как пример подходит! Как получить такое: Код:
Windows Registry Editor Version 5.00 Если здесь воспользоваться RegRead() au3 то потом более проблематично создавать Windows Registry Editor V5.00 - валидный файл, так как переносы строк expand_sz там мудрённо как-то выщитываются, да и потом конвертировать в строку байтов с запятыми, там фиг разберёшся. Мне более нормальным представляется очистка готового файла от лишних строк, об чём и речь. Помогите пожалуйста! На худой конец можно зделать INI файл того же содержания... То-есть такой Код:
[Version] Кстати, здесь проблемма автоит в том, что тут нету логики a=b для реестра! Вот формат строки примерно HKLM,"Software\Classes\AVIFile\Extensions\AVI",,0,"{00020000-0000-0000-C000-000000000046}" как видите без равенства "=" |
Я на досуге думал об этом и вот что надумалось!...
Надо только сграбить "бинарные" строки в какуюнибудь переменную. Остальные строки не представляют проблему. Значит надо только найти начало по =hex "признаку" и конец (всей) строки, ну скажем по начальным кавычкам '"' следущего параметра наверно? Но я только не знаю есть ли возможность сохранить этот контент строк в том виде как он записан в регфайле, чтобы его вбить в переменную $var1 ? Тогда было бы можно просто её вписать в новый файл. Код:
Windows Registry Editor Version 5.00 Есть ли способ схватить такое: (2):31,00,32,00,33,00,34,00,35,00,36,00,37,00,38,00,39,00,61,\ 00,62,00,63,00,64,00,65,00,66,00,67,00,68,00,69,00,6a,00,6b,00,6c,00,6d,00,\ 6e,00,6f,00,70,00,71,00,72,00,73,00,74,00,75,00,76,00,77,00,78,00,79,00,7a,\ 00,00,00 как дамп строк с переносами и пробелами?? Да вот вспомнил, это массив обычно называется... |
semiono, предлагаю более простой способ:
1. по всем REG-файлам заменить "[HKEY_" на "[HKEY_CURRENT_USER\TMP\HKEY_"; 2. загрузить все полученные REG-файлы (через "REGEDIT /S" или "REG IMPORT"); 3. стандартными REG-функциями почистить ветку "HKCU\TMP" от лишних параметров; 4. выгрузить "HKCU\TMP" в новый REG-файл ("REGEDIT /E" или "REG EXPORT"); 5. в новом REG-файле заменить "[HKEY_CURRENT_USER\TMP\HKEY_" на "[HKEY_"; 6. удалить ключ "HKCU\TMP" (для надежности можно и перед шагом 1). P.S. кста я уже предлагал тебе подобное: CMD/BAT - Export Registry Value |
amel27, проверяю тот батник по ссылке, пишет:
Код:
Error: The system was unable to find the specified registry key or value "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" или так HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\"Control\Session Manager\Environment" и ещё я обычно ControlSet001 юзаю, никогда не подводило, хотя понимаю что текущий сет правильней, но не в этом дело... ещё у меня английский дистр, поэтому некое "Мой компьютер" может глючить! Но не знаю в чём дело. ...предлагаешь зделать экспорт в временный кей! А ну я понял! Интересная идея! Забавно, надо подумать... |
Цитата:
|
Время: 06:35. |
Время: 06:35.
© OSzone.net 2001-