![]() |
|
|
![]()
|
|
| amt2001 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2011 Репутация: нет Всего: нет |
Использую класс TRegistry для работы с реестром. Сохраняю нужный раздел с помощью savekey, файл экспорта hive создается.
Проблема в том, что при сохранении одного и того же раздела реестра файлы отличаются, о чем говорят контрольные суммы и сравнения данных файлов. Разница в принципе не значительная и, подозреваю, для функций класса tregistry импорт данных файлов пройдет без проблем, но для меня это критично. Пробовал работать с regsavekey с различными форматами, результат тот же. Во вложении два файла выгрузки одного и того же реестра где видно (с помощью утилиты comp), что некоторыей байты отличаются. Кто-нибудь сталкивался с таким? |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
ихде ? да, сталкивался. В реестре хранится дата/время последнего изменения, поэтому и отличается. Поэтому и не сильно -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| amt2001 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2011 Репутация: нет Всего: нет |
вроде прикрепил.
Так раздел то не меняется... производится только его чтение. А можно ли не сохранять время? Присоединённый файл ( Кол-во скачиваний: 4 )
reg.zip 0,98 Kb |
||||
|
|||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
От тебя это не зависит. Внутрь функций работы с реестром встроено протоколирование всех действий. По-моему в этих функциях нет такого флажка "не протоколировать действия" или что-либо подобное...
Это сообщение отредактировал(а) borisbn - 13.7.2011, 17:16 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| amt2001 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2011 Репутация: нет Всего: нет |
Вижу две альтернативы: 1. Использовать другие классы или компоненты. Кстати, какие есть? (winapi не предлагать) 2. Самому рекурсивно перебирать ветки на. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
никакие не помогут, т.к. протоколирование действий заложено на самом низком уровне, а все компоненты - всего-лишь обёртка над winAPI Понятия не имею, правильный ли это выход, т.к. ты ни слова не сказал о задаче -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| amt2001 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2011 Репутация: нет Всего: нет |
задача осуществить контроль целостности веток реестра... для этого выгружаю ветку в файл, считаю контрольную сумму и ожидаю очередной проверки...
Есть еще один вариант - вызывать для экспорта regedit, но мне это вариант не нравится.
Почему не помогут? можно выгружать в тектовом виде (reg-файл)... там уж точно никакое время не проставляется... |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
теперь, когда задача понятна, то ессно, можно и выгружать в текстовом виде и проверять каждый раз всю ветку "вручную", но может стОит посмотреть на такого рода ф-ции ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| amt2001 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2011 Репутация: нет Всего: нет |
Данные функции не подойдут, поскольку имеют смысл только на протяжении времени работы приложения. А я хочу посчитать контрольную сумму с возможностью ее проверки, например, через сутки, неделю и т.д. когда невозможно производить отслеживание событий.
Надо посмотреть в сторону hive файла. Может попробовать в нем время менять или еще что-нибудь. |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
А зачем, вообще, хранить целый файл (hive или reg)? Можно же сохранить reg-файл во временную папку, затем подсчитать MD5 или CRC32 или ещё что, и затем сохранить одну только строку. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
чем ?
потом сравниваешь файл "эталона" с полученным побайтно... Добавлено через 10 минут и 59 секунд кста, можно вообще обойтись cmd-шником. Нужно только найти команду сравнения двух файлов. Получится как-то так
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
| amt2001 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2011 Репутация: нет Всего: нет |
Именно так я сейчас и пытаюсь сделать, но поскольку при каждом экспорте в файл сохраняется время, то контрольные суммы постоянно разные. Сейчас сравниваю hive, поскольку сохранять в *.reg умеет только regedit, winapi-шные функции и wrapper-ы этого не умеют.
ShellExecute
cmd не подойдет как и внешний вызов regedit - не хочу привязываться к внешним приложениям. Это сообщение отредактировал(а) amt2001 - 14.7.2011, 08:15 |
||||||
|
|||||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Структура файла предельно проста. Можете самостоятельно формировать такой файл. Ну или как советовал borisbn, через командную строку. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| amt2001 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.7.2011 Репутация: нет Всего: нет |
Решил проблему так - удаляю заголовок hive файла (первые 512 байт), где хранится внутренний hash и прочее барахло, не имеющее отношения к ключам и значениям реестра. Далее рассчитываю hash файла. Пока полет нормальный
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |