正在阅读:Delphi实现对注册表的监视和扫描Delphi实现对注册表的监视和扫描

2004-03-08 14:55 出处:CSDN 作者:flyinwuhan 责任编辑:linjixiong

  Showmessage('CreateEvent failed.');
  exit;
  end;

  if RegOpenKeyEx( HKEY_CURRENT_USER, //跟键
  'Software', //子键
  0, //reserved
  KEY_NOTIFY, //监视用
  hKeyx //保存句柄
  ) <> ERROR_SUCCESS then
  begin
  CloseHandle( hNotify );
  Showmessage('RegOpenKeyEx failed.');
  exit;
  end;

  if RegNotifyChangeKeyValue( hKeyx, //监视子键句柄
  TRUE, //监视此项的子键
  REG_NOTIFY_CHANGE_NAME or REG_NOTIFY_CHANGE_LAST_SET,
  hNotify, //接受注册表变化事件的事件对象句柄
  TRUE //注册表变化前报告
  ) <> ERROR_SUCCESS then
  begin
  CloseHandle( hNotify );
  RegCloseKey( hKeyx );
  Showmessage('RegNotifyChangeKeyValue failed');
  exit;
  end;

  dwRes := WaitForSingleObject( hNotify, 60 * 1000 ); //监视一分钟
  if dwRes = 0 then
  Showmessage( 'Registry will be changed.' );

  CloseHandle( hNotify );
  RegCloseKey( hKeyx );
  end;

  要注意的是,API: WaitForSingleObject要等到注册表变化事件发生或者超时才会返回,在此期间我们的程序将失去响应。解决的办法是新建一个线程,在新线程中监视注册表。

  对注册表进行扫描要用到另外两个API: RegEnumKey和RegEnumValue。

  LONG RegEnumKey(
  HKEY hKey, // 要扫描的注册表项目句柄
  DWORD dwIndex, // 要扫描的subkey序号
  LPTSTR lpName, // 要扫描的subkey名称




察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品