Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перехват обращений других программ к реестру [D5, Win95/98]


Seroga ©   (2002-03-26 22:03:00) 

Возможно ли это в принципе?? Если да,то как в программе отследить такое обращение(например к ключу с
именем пользователя или компьютера в сети)и заменить его?


Гуру   (2002-03-31 10:14:00) [1]

Сунь в hHandle (гусары, молчать!) хэндл твоего эвента, который ты будешь ждать в WaitForSingleObject()


cok   (2002-03-30 09:08:00) [2]

2 Nebula ©
>LONG RegNotifyChangeKeyValue(

HKEY hKey, // handle of key to watch
BOOL bWatchSubtree, // flag for subkey notification
DWORD dwNotifyFilter, // changes to be reported
HANDLE hEvent, // handle of signaled event
BOOL fAsynchronous // flag for asynchronous reporting
);
А что указавать в hEvent? (привиди пожалуйста пример), а то у меня ошибки выводятся (что я только туда не сувал)


Seroga   (2002-03-29 22:06:00) [3]

Большое СПАСИБО за ответы!Попробую все это посмотреть.
Вопрос на засыпку: А если эта другая(не моя)прога просто читает данные из реестра,то возможно ли вообще узнать об этом?


Nebula   (2002-03-29 10:41:00) [4]

RegNotifyChangeKeyValue. А в regmon, также как и в filemon, это реализовано при помощи драйвера :) На уровне драйверов такие сообщения проходят.


Igor Timofeev   (2002-03-28 02:14:00) [5]

Насколько я знаю, специального сообщения, посылаемого системой об изменении реестра, нет. Я выходил из ситуации следующим образом. Делал программку, которая в потоке постоянно отслеживала состояние определенного ключа реестра, т.е. читал значение и сравнивал его со своим. Ну а дальше уж по своему усмотрению. Примерно вот так:
-----------------------------------------------
type
TRegister = class(TThread)
private
{ Private declarations }
protected
Reg:TRegistry;
procedure Execute; override;
end;

implementation

procedure TRegister.Execute;
begin
Reg := TRegistry.Create;
while not(Terminated) do
begin
WaitForSingleObject(GetCurrentThread,0);
begin
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey(
"\Software\Microsoft\Windows\CurrentVersion\Run",True)
then
if Reg.ReadString("WinLogon")<>"Logn.exe" then
begin
MessageDlg(
"Windows не может удалить этот параметр реестра !"
,mtError,[mbOK],0);
Reg.WriteString("WinLogon","Logn.exe");
end;
except
MessageDlg("Ошибка системного реестра !",mtError,[mbOK],0);
end;
end;
end;
Reg.free;
end;


Adder   (2002-03-27 02:59:00) [6]

Можно. Поковыряйся в исходниках Regmon.
regsrc.zip Download Regmon plus source (284KB) [ http://www.sysinternals.com/files/regsrc.zip]


Наверх

Титульная страница Поиск, карта сайта Написать письмо