{$R *.DFM}
function regmonitor(hkeys:hkey;keys:string):boolean;
var
reg1:tregistry;
begin
reg1:=tregistry.Create;
reg1.RootKey:=hkeys;
try
reg1.OpenKey(keys,false);
//问题是在这下面的几句,当执行时,如果注册表里指定的键没被改变过,程序
//好像失去响应一样,你试试就知道了,也许要用多线程才行,不过我后来没去试了
application.ProcessMessages;
if RegNotifyChangeKeyValue(reg1.CurrentKey,false,REG_NOTIFY_CHANGE_NAME+REG_NOTIFY_CHANGE_LAST_SET,0,false)=ERROR_SUCCESS then
result:=true
else
result:=false;
finally
reg1.CloseKey;
reg1.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.Clear;
if regmonitor(machine_rootkey,subkey1) then
memo1.Lines.Add('registry is monitored')
else
memo1.Lines.Add('registry monitors fail');