Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

снимки системного реестра   Найти похожие ветки 

 
Admiral   (2007-04-21 09:49) [0]

Здравствуйте, товарищи программисты. Подскажите, пожалуйста, как сделать снимок ветви системного реестра Windows, а затем сравнить 2 снимка, чтобы выявить произведенные изменения. Буду рад любым ссылкам по теме, кускам кода, и простым советам. Заранее спасибо.


 
Kedge ©   (2007-04-21 10:58) [1]

imho, в общем случае, - из под DOS


 
slow.alfamoon.com   (2007-04-21 11:26) [2]

RegSaveKey попробуйте.


 
Admiral   (2007-04-22 21:20) [3]


> imho, в общем случае, - из под DOS

я считал, что снимки делаются средствами WinAPI(юзаем класс Registry) не пойму при чем здесь DOS


 
Admiral   (2007-04-22 21:22) [4]


> Registry

TRegistry, простите


 
Kedge ©   (2007-04-22 22:21) [5]

>а затем сравнить 2 снимка, чтобы выявить произведенные изменения
Совсем не уверен, что из под Windows это полноценно возможно.
Блокировать запись в реестр ,в общем случае, нельзя.
Пока ты бежишь по дереву, оно может меняться. Последствия можно себе представить.
Как минимум, снимок не будет отражать истинное положение вещей.


 
SLoW.AlfaMoon.Com   (2007-04-23 11:48) [6]

Kedge ©   (22.04.07 22:21) [5]

>а затем сравнить 2 снимка, чтобы выявить произведенные изменения
Совсем не уверен, что из под Windows это полноценно возможно.

Чем же тогда объяснить существование и популярность такой программы, как RegSnap?


 
Kedge ©   (2007-04-23 12:58) [7]

> [6] SLoW.AlfaMoon.Com   (23.04.07 11:48)
> Совсем не уверен, что из под Windows это полноценно возможно.
> Чем же тогда объяснить существование и популярность такой программы, как RegSnap?
Во всех своих постах, я делал оговоки: imho и "в общем случае".
Чем "объяснить существование и популярность" - не знаю. :)
Так же, как и принципов ее работы. Но остаюсь при свем imho, а именно: в общем случае,
из под Windows станет возможно корректно "сделать снимок ветви системного реестра Windows, а затем сравнить 2 снимка",
только после реализации временной блокировки записи в реестр. А как это сделать - не представляю :)


 
GrayFace ©   (2007-04-23 13:57) [8]

А какой смысл получать полностью актуальный снимок реестра. Если интересует, что натворила конкретная прога, все что делает система до ее старта и после ее завершения не кажно.


 
Kedge ©   (2007-04-23 14:10) [9]

>[8] GrayFace ©   (23.04.07 13:57)
"Если интересует, что натворила конкретная прога", то, возможно, RegMon поможет ?


 
USTAS   (2007-04-23 17:54) [10]


procedure SaveRegistry;
var Buffer: array[0..1023] of Char;
   temp_dir: String;
begin
 SetString(temp_dir, Buffer, GetTempPath(Sizeof(Buffer)-1,Buffer));
 if Copy(temp_dir,Length(temp_dir)-1,1) <> "\" then temp_dir := temp_dir + "\";
 //winexec(PChar("reg export hklm " + temp_dir + "hklm_" + FormatDateTime("ddmmyy",Date) + "_" + FormatDateTime("hhnn",Time) + ".reg"),SW_HIDE);
 //winexec(PChar("reg export hkcu " + temp_dir + "hkcu_" + FormatDateTime("ddmmyy",Date) + "_" + FormatDateTime("hhnn",Time) + ".reg"),SW_HIDE);
 winexec(PChar("regedit.exe -ea "" + temp_dir + "hklm_" + FormatDateTime("ddmmyy",Date) + "_" + FormatDateTime("hhnn",Time) + ".reg" "HKEY_CURRENT_USER""),SW_HIDE);
 winexec(PChar("regedit.exe -ea "" + temp_dir + "hklm_" + FormatDateTime("ddmmyy",Date) + "_" + FormatDateTime("hhnn",Time) + ".reg" "HKEY_LOCAL_MACHINE""),SW_HIDE);
end;



procedure RestoreRegistry;
var Buffer: array[0..1023] of Char;
   temp_dir: String;
   reg_files: TSearchRec;
begin
 SetString(temp_dir, Buffer, GetTempPath(Sizeof(Buffer)-1,Buffer));
 if Copy(temp_dir,Length(temp_dir)-1,1) <> "\" then temp_dir := temp_dir + "\";
 if FindFirst(temp_dir + "*.reg", faAnyFile, reg_files) = 0 then begin
   winexec(PChar("regedit /s " + temp_dir + reg_files.Name + ".reg"),SW_NORMAL);
   while FindNext(reg_files) = 0 do begin
     winexec(PChar("regedit /s " + temp_dir + reg_files.Name + ".reg"),SW_NORMAL);
   end; //while
 end;
 FindClose(reg_files);
end;


 
SLoW.AlfaMoon.Com   (2007-04-24 09:36) [11]

Kedge
Понятно. Все же автору, как я понял, слепок всего реестра не нужен. В таком случае RegSaveKey вполне подходит.


 
Admiral   (2007-04-29 15:54) [12]

Многоуважаемые мастера, спасибо за советы. Я тут вот до чего докопался:  подключив, в uses библиотеку ShelAPI, я получаю инструмент экспорта из виндовского RegEdita. По этой причине не стану изобретать велосипед и для сохранения ветви реестра буду юзать этот инструмент. Теперь проблема в следующем: чтобы сравнивать 2 снимка, я могу использовать либо полученные *.reg файлы(и сравнивать их), либо мне надо загонять сравниваемую ветвь в структуру типа «дерево» и сравнивать элементы 2х деревьев. Во втором случае нужно искать и вспоминать алгоритмы работы с деревьями. Посоветуйте, как лучше поступить. Сам чувствую, что лучше(но при этом и сложнее) работать с деревьями.
P.S.: обрадуюсь исходникам обоих способов :-)


 
TStas ©   (2007-05-01 20:30) [13]

Imho иерархию надо вешать на дерево и смотреть на дерево, хотя оно и очень тормозное.


 
Admiral   (2007-05-05 11:20) [14]


> подключив, в uses библиотеку ShelAPI, я получаю инструмент
> экспорта из виндовского RegEdita

...и на сколько я понял, коллега USTAS, предложил нечто похожее:

> procedure SaveRegistry;
> var Buffer: array[0..1023] of Char;
>    temp_dir: String;
> begin
>  SetString(temp_dir, Buffer, GetTempPath(Sizeof(Buffer)-
> 1,Buffer));
>  if Copy(temp_dir,Length(temp_dir)-1,1) <> "\" then temp_dir
> := temp_dir + "\";
>  //winexec(PChar("reg export hklm " + temp_dir + "hklm_"
> + FormatDateTime("ddmmyy",Date) + "_" + FormatDateTime("hhnn",
> Time) + ".reg"),SW_HIDE);
>  //winexec(PChar("reg export hkcu " + temp_dir + "hkcu_"
> + FormatDateTime("ddmmyy",Date) + "_" + FormatDateTime("hhnn",
> Time) + ".reg"),SW_HIDE);
>  winexec(PChar("regedit.exe -ea "" + temp_dir + "hklm_"
> + FormatDateTime("ddmmyy",Date) + "_" + FormatDateTime("hhnn",
> Time) + ".reg" "HKEY_CURRENT_USER""),SW_HIDE);
>  winexec(PChar("regedit.exe -ea "" + temp_dir + "hklm_"
> + FormatDateTime("ddmmyy",Date) + "_" + FormatDateTime("hhnn",
> Time) + ".reg" "HKEY_LOCAL_MACHINE""),SW_HIDE);
> end;



Страницы: 1 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
8-1168776768
andr1962
2007-01-14 15:12
2007.11.11
Помогите с directdraw


4-1178601036
-=Germe$=-
2007-05-08 09:10
2007.11.11
Еще раз про глобальные ловушки


15-1191826379
Странник81
2007-10-08 10:52
2007.11.11
Подскажите где найти компонент


2-1192184520
inex
2007-10-12 14:22
2007.11.11
усовершенствование цикла


6-1173451478
K@KTUS
2007-03-09 17:44
2007.11.11
Компоненты FastNet