Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с сохранением раздела реестра 
:(
    Опции темы
amt2001
Дата 13.7.2011, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.7.2011

Репутация: нет
Всего: нет



Использую класс TRegistry для работы с реестром. Сохраняю нужный раздел с помощью savekey, файл экспорта hive создается.
Проблема в том, что при сохранении одного и того же  раздела реестра файлы отличаются, о чем говорят контрольные суммы и сравнения данных файлов. Разница в принципе не значительная и, подозреваю, для функций класса tregistry импорт данных файлов пройдет без проблем, но для меня это критично.
Пробовал работать с regsavekey с различными форматами, результат тот же.

Во вложении два файла выгрузки одного и того же реестра где видно (с помощью утилиты comp), что некоторыей байты отличаются. 

Кто-нибудь сталкивался с таким?

PM MAIL   Вверх
borisbn
Дата 13.7.2011, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(amt2001 @  13.7.2011,  14:35 Найти цитируемый пост)
Во вложении два файла выгрузки одного и того же реестра где видно (с помощью утилиты comp), что некоторыей байты отличаются. 

ихде ?

Цитата(amt2001 @  13.7.2011,  14:35 Найти цитируемый пост)
Кто-нибудь сталкивался с таким?

да, сталкивался. В реестре хранится дата/время последнего изменения, поэтому и отличается. Поэтому и не сильно smile


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
amt2001
Дата 13.7.2011, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.7.2011

Репутация: нет
Всего: нет



Цитата

ихде ?


вроде прикрепил.

 
Цитата

да, сталкивался. В реестре хранится дата/время последнего изменения, поэтому и отличается. Поэтому и не сильно


Так раздел то не меняется... производится только его чтение.
А можно ли не сохранять время?

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  reg.zip 0,98 Kb
PM MAIL   Вверх
borisbn
Дата 13.7.2011, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(amt2001 @  13.7.2011,  17:06 Найти цитируемый пост)
А можно ли не сохранять время?

От тебя это не зависит. Внутрь функций работы с реестром встроено протоколирование всех действий.
По-моему в этих функциях нет такого флажка "не протоколировать действия" или что-либо подобное...

Цитата(amt2001 @  13.7.2011,  14:35 Найти цитируемый пост)
подозреваю, для функций класса tregistry импорт данных файлов пройдет без проблем

 smile 

Это сообщение отредактировал(а) borisbn - 13.7.2011, 17:16


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
amt2001
Дата 13.7.2011, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.7.2011

Репутация: нет
Всего: нет





 Вижу две альтернативы:
1. Использовать другие классы или компоненты. Кстати, какие есть? (winapi не предлагать)
2. Самому рекурсивно перебирать ветки на.
PM MAIL   Вверх
borisbn
Дата 13.7.2011, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(amt2001 @  13.7.2011,  18:43 Найти цитируемый пост)
1. Использовать другие классы или компоненты. Кстати, какие есть? (winapi не предлагать)

никакие не помогут, т.к. протоколирование действий заложено на самом низком уровне, а все компоненты - всего-лишь обёртка над winAPI

Цитата(amt2001 @  13.7.2011,  18:43 Найти цитируемый пост)
2. Самому рекурсивно перебирать ветки на.

Понятия не имею, правильный ли это выход, т.к. ты ни слова не сказал о задаче  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
amt2001
Дата 13.7.2011, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.7.2011

Репутация: нет
Всего: нет



задача осуществить контроль целостности веток реестра... для этого выгружаю ветку в файл, считаю контрольную сумму и ожидаю очередной проверки...
Есть еще один вариант - вызывать для экспорта regedit, но мне это вариант не нравится.

Цитата

никакие не помогут, т.к. протоколирование действий заложено на самом низком уровне, а все компоненты - всего-лишь обёртка над winAPI

 Почему не помогут? можно выгружать в тектовом виде (reg-файл)... там уж точно никакое время не проставляется...
PM MAIL   Вверх
borisbn
Дата 13.7.2011, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(amt2001 @  13.7.2011,  20:39 Найти цитируемый пост)
Почему не помогут? можно выгружать в тектовом виде (reg-файл)... там уж точно никакое время не проставляется...

теперь, когда задача понятна, то ессно, можно и выгружать в текстовом виде и проверять каждый раз всю ветку "вручную", но может стОит посмотреть на такого рода ф-ции ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
amt2001
Дата 13.7.2011, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.7.2011

Репутация: нет
Всего: нет



Данные функции не подойдут, поскольку имеют смысл только на протяжении времени работы приложения. А я хочу посчитать контрольную сумму с возможностью ее проверки, например, через сутки, неделю и т.д. когда невозможно производить отслеживание событий.
Надо посмотреть в сторону hive файла. Может попробовать в нем время менять или еще что-нибудь.
 
PM MAIL   Вверх
artsb
Дата 13.7.2011, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(amt2001 @  13.7.2011,  23:15 Найти цитируемый пост)
Надо посмотреть в сторону hive файла.

А зачем, вообще, хранить целый файл (hive или reg)? Можно же сохранить reg-файл во временную папку, затем подсчитать MD5 или CRC32 или ещё что, и затем сохранить одну только строку.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
borisbn
Дата 14.7.2011, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(amt2001 @  13.7.2011,  20:39 Найти цитируемый пост)
Есть еще один вариант - вызывать для экспорта regedit, но мне это вариант не нравится

чем ?
Цитата

regedit /E c:\hklm_run.reg "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run"

потом сравниваешь файл "эталона" с полученным побайтно...

Добавлено через 10 минут и 59 секунд
кста, можно вообще обойтись cmd-шником. Нужно только найти команду сравнения двух файлов. Получится как-то так
Код

regedit /E c:\temp\now.reg "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" <--- сюда вписать нужную ветку
compare c:\temp\now.reg c:\temp\was.reg <--- was.reg - эталон, compare -какая-то утилита сравнения
if errorlevel 1 goto changed
goto ok
:changed
echo Изменён
goto end
:ok
echo OK
:end



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
amt2001
Дата 14.7.2011, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.7.2011

Репутация: нет
Всего: нет



Цитата

А зачем, вообще, хранить целый файл (hive или reg)? Можно же сохранить reg-файл во временную папку, затем подсчитать MD5 или CRC32 или ещё что, и затем сохранить одну только строку.

Именно так я сейчас и пытаюсь сделать, но поскольку при каждом экспорте в файл сохраняется время, то контрольные суммы постоянно разные.

Сейчас сравниваю hive, поскольку сохранять в *.reg умеет только regedit, winapi-шные функции и wrapper-ы этого не умеют. 

Цитата

чем ?

ShellExecute

Цитата

кста, можно вообще обойтись cmd-шником. Нужно только найти команду сравнения двух файлов. Получится как-то так

cmd не подойдет как и внешний вызов regedit - не хочу привязываться к внешним приложениям.

Это сообщение отредактировал(а) amt2001 - 14.7.2011, 08:15
PM MAIL   Вверх
artsb
Дата 14.7.2011, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(amt2001 @  14.7.2011,  08:12 Найти цитируемый пост)
Сейчас сравниваю hive, поскольку сохранять в *.reg умеет только regedit, winapi-шные функции и wrapper-ы этого не умеют. 

Структура файла предельно проста. Можете самостоятельно формировать такой файл. Ну или как советовал borisbn, через командную строку.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
amt2001
  Дата 15.7.2011, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.7.2011

Репутация: нет
Всего: нет



Решил проблему так - удаляю заголовок hive файла (первые 512 байт), где хранится внутренний hash и прочее барахло, не имеющее отношения к ключам и значениям реестра. Далее рассчитываю hash файла. Пока полет нормальный 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.