如何判断哪个值触发了 RegNotifyChangeKeyValue

How to tell which value triggered RegNotifyChangeKeyValue?

本文关键字:RegNotifyChangeKeyValue 何判断 判断      更新时间:2023-10-16

我正在使用RegNotifyChangeKeyValue API来跟踪对注册表项的更改,以及类似于该MSDN页面底部给出的示例C++示例。我这样设置这个 API:

RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\Company\Product", 0, KEY_NOTIFY, &hKey);
RegNotifyChangeKeyValue(hKey, FALSE, REG_NOTIFY_CHANGE_LAST_SET, hEvent, TRUE);

那么,比如说,当这个API作为参数的事件发出信号(这意味着对SoftwareCompanyProduct键的更改)时,有没有办法找出哪个值实际触发了它?

No.您需要在调用 RegNotifyChangeKeyValue 后缓存当前的名称/值对,然后在发出信号时,您可以将最新的名称/值对与缓存进行比较以查看有何不同,然后更新缓存以用于下一个信号。

如果在 RegNotifyChangeKeyValue 调用之前构建缓存,并且由两个操作之间的某个线程进行更新,则缓存将不会反映实际状态,并且可能会导致下次更新出现问题(具体取决于您的需求)。

在 RegNotifyChangeKeyValue 之后构建缓存可能会导致您的代码发出信号,但无法知道所涉及的值(如果更新是由两个操作之间的另一个线程进行的)。没什么大不了的:只是假装没有看到任何变化。

相关文章:
  • 没有找到相关文章