semiono
18-01-2010, 22:09
Очень похоже, что трудная тема и даже если имеет решение, то какое нибудь экзотическое, но всёравно спрошу.
Во-первых, как можно объединить контент двух регфайлов, здесь сразу же возникает проблемма удаления одного из лишних заголовков?
Windows Registry Editor Version 5.00
...
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]
...
[HKEY_LOCAL_MACHINE\Software\abcd]
тут пусто
[HKEY_LOCAL_MACHINE\Software\b]
...
И ещё одно условие, пожалуй ещё труднее, надо не просто удалить лишний контент, но и так чтобы пустые пространства
на месте строк не оставались. ???
---
Я даже приведу пример, чтоб было наглядно, хотя это более сложный случай, так как экспортировать весь HCCR это слишком накладно,
чтоб потом его разбирать, но зато как пример подходит!
Как получить такое:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.rar]
@="WinRAR"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WinRAR\DefaultIcon]
@="C:\\I\\Apps\WinRar\\WinRAR.exe,1"
(Это только пример без expand_sz сторок, которые тоже нужны будут в другом случае!)
Если здесь воспользоваться RegRead() au3 то потом более проблематично создавать Windows Registry Editor V5.00 - валидный файл,
так как переносы строк expand_sz там мудрённо как-то выщитываются, да и потом конвертировать в строку байтов с запятыми,
там фиг разберёшся. Мне более нормальным представляется очистка готового файла от лишних строк, об чём и речь.
Помогите пожалуйста!
На худой конец можно зделать INI файл того же содержания...
То-есть такой
[Version]
Signature=$Windows NT$
[DefaultInstall]
AddReg=Add.Reg
[Add.Reg]
и здесь избирательно нужные строки параметров реестра....
Условия таковы, что я заранее всегда знаю имена параметров, но я не знаю заведомо их будущие значения, которые получу из реестра!
Кстати, здесь проблемма автоит в том, что тут нету логики a=b для реестра!
Вот формат строки примерно
HKLM,"Software\Classes\AVIFile\Extensions\AVI",,0,"{00020000-0000-0000-C000-000000000046}"
как видите без равенства "="
Во-первых, как можно объединить контент двух регфайлов, здесь сразу же возникает проблемма удаления одного из лишних заголовков?
Windows Registry Editor Version 5.00
...
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]
...
[HKEY_LOCAL_MACHINE\Software\abcd]
тут пусто
[HKEY_LOCAL_MACHINE\Software\b]
...
И ещё одно условие, пожалуй ещё труднее, надо не просто удалить лишний контент, но и так чтобы пустые пространства
на месте строк не оставались. ???
---
Я даже приведу пример, чтоб было наглядно, хотя это более сложный случай, так как экспортировать весь HCCR это слишком накладно,
чтоб потом его разбирать, но зато как пример подходит!
Как получить такое:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.rar]
@="WinRAR"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WinRAR\DefaultIcon]
@="C:\\I\\Apps\WinRar\\WinRAR.exe,1"
(Это только пример без expand_sz сторок, которые тоже нужны будут в другом случае!)
Если здесь воспользоваться RegRead() au3 то потом более проблематично создавать Windows Registry Editor V5.00 - валидный файл,
так как переносы строк expand_sz там мудрённо как-то выщитываются, да и потом конвертировать в строку байтов с запятыми,
там фиг разберёшся. Мне более нормальным представляется очистка готового файла от лишних строк, об чём и речь.
Помогите пожалуйста!
На худой конец можно зделать INI файл того же содержания...
То-есть такой
[Version]
Signature=$Windows NT$
[DefaultInstall]
AddReg=Add.Reg
[Add.Reg]
и здесь избирательно нужные строки параметров реестра....
Условия таковы, что я заранее всегда знаю имена параметров, но я не знаю заведомо их будущие значения, которые получу из реестра!
Кстати, здесь проблемма автоит в том, что тут нету логики a=b для реестра!
Вот формат строки примерно
HKLM,"Software\Classes\AVIFile\Extensions\AVI",,0,"{00020000-0000-0000-C000-000000000046}"
как видите без равенства "="