如题。

解决方案 »

  1.   

    http://www.51cto.com/html/2005/1013/7253.htmDelphi实现对注册表的监视和扫描 
    http://www.51cto.com 2005-10-13 13:10 51cto.com整理  
     
    Delphi自带的TRegistry类只能实现注册表的基本操作,如果我们要实时监视注册表的变化或者扫描注册表特定项下的所有子项,TRegistry类就无能为力了。 监视注册表相关项的改变要用到一个API:RegNotifyChangeKeyValue。LONG RegNotifyChangeKeyValue(HKEY hKey, // 要监视的一个项的句柄 BOOL bWatchSubtree, // 是否监视此项的子键 DWORD dwNotifyFilter, // 监视哪些变化 HANDLE hEvent, // 接受注册表变化事件的事件对象句柄 BOOL fAsynchronous // 注册表变化前报告还是注册表变化后才报告 );注意上面的hEvent是接受注册表变化事件的事件对象句柄,我们要用API:CreateEvent来创建一个系统事件对象。HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes, // SECURITY_ATTRIBUTES结构BOOL bManualReset, // 是否自动重置 BOOL bInitialState, // 是否设置初始状态LPCTSTR lpName // 事件对象的名称); 
      

  2.   

    iRes := RegEnumKey( hKeyx, dwIndex, buf, dwSize );if iRes = ERROR_NO_MORE_ITEMS thenreakelse if iRes = ERROR_SUCCESS theneginListbox1.Items.Add( buf );Inc( dwIndex );end;until iRes <> ERROR_SUCCESS;