2

我一直在使用ReadDirectoryChangesW来监视文件系统的特定部分。它很好地提供了更改的文件或目录的部分路径名以及有关更改性质的线索。这可能把我宠坏了。

我还需要监视注册表的特定部分,但它看起来好像RegNotifyChangeKeyValue很粗糙。它会告诉我给定键下的某些东西发生了变化,但它似乎不想告诉我那个东西可能是什么。无赖!

有问题的注册表部分是任意深度的,因此枚举所有子键并调用RegNotifyChangeKeyValue每个可能不是一个热门的想法,因为我最终将不得不克服MAXIMUM_WAIT_OBJECTS. 另外,我必须调整我传递给的键集,RegNotifyChangeKeyValue如果不每次都枚举子键,这将是相当大的努力,这会破坏相当多的目的。

有任何想法吗?

4

1 回答 1

1

不幸的是,是的。您可能必须缓存代码感兴趣的所有值,并在收到更改触发器时自行更新此缓存,或者设置多个观察者,每个观察者关注每个单独的数据项。正如您所指出的,第二种解决方案很快就会变得笨拙。

如果您可以在 .Net 中实现所需的代码,您可以通过RegistryEvent 及其子类更优雅地获得相同的效果。

于 2010-10-02T15:54:24.820 回答