2010-10-02 78 views
2

我一直在使用ReadDirectoryChangesW來監視文件系統的特定部分。它很好地爲文件或目錄提供了一個部分路徑名,它隨着關於變化性質的線索而變化。這可能會傷害我。RegNotifyChangeKeyValue看起來像粗糙嗎?

我還需要監視註冊表的特定部分,但看起來好像RegNotifyChangeKeyValue非常粗糙。它會告訴我東西在給定的鍵下改變了,但它似乎並不想告訴我可能是什麼東西。壞消息!

有問題的註冊表的部分是任意深的,所以枚舉所有的子鍵並且爲每個子鍵調用RegNotifyChangeKeyValue可能不是一個熱門的想法,因爲我最終最終不得不克服MAXIMUM_WAIT_OBJECTS。另外,我必須調整我傳遞給RegNotifyChangeKeyValue的一組密鑰,如果不每次枚舉子密鑰都會付出相當大的努力,這將會損失相當數量的目的。

任何想法?

回答

1

不幸的是,是的。您可能必須緩存代碼中感興趣的所有值,並在您獲取更改觸發器時自行更新此緩存,否則請設置多個觀察器,每個感興趣的單個數據項上設置一個。正如你所指出的,第二種解決方案很快就會變得笨拙。

如果您可以在.Net中實現所需的代碼,則可以通過RegistryEvent and its subclasses更優雅地獲得相同的效果。