如何判断哪个值触发了RegNotifyChangeKeyValue?

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

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

所以说,当这个API作为参数发生的事件被发信号(这意味着对Software\Company\Product键的改变)有没有办法找出哪个值实际触发了它?

Solutions Collecting From Web of "如何判断哪个值触发了RegNotifyChangeKeyValue?"

不需要。您需要在调用RegNotifyChangeKeyValue之后缓存当前的名称/值对,然后在发送信号时可以将最新的名称/值对与缓存进行比较,以查看不同之处,然后更新缓存以获取下一个信号。

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

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