2010-10-02 45 views
2

J'ai utilisé ReadDirectoryChangesW pour surveiller une partie particulière du système de fichiers. Il donne plutôt un chemin partiel au fichier ou répertoire qui a changé avec un indice sur la nature du changement. Cela m'a peut-être gâté.RegNotifyChangeKeyValue est-il aussi grossier qu'il en a l'air?

J'ai également besoin de surveiller une partie particulière du registre, mais il semble que RegNotifyChangeKeyValue est très grossier. Il me dira que quelque chose sous la clé donnée a changé, mais il ne semble pas vouloir me dire ce que quelque chose aurait pu être. Bummer!

La partie du registre en question est arbitrairement profonde, donc énumérer toutes les sous-clés et appeler RegNotifyChangeKeyValue pour chaque n'est probablement pas une bonne idée parce que je finirai par devoir surmonter MAXIMUM_WAIT_OBJECTS. De plus, je devrais ajuster l'ensemble des clés que j'avais passées à RegNotifyChangeKeyValue, ce qui serait une bonne quantité d'efforts à faire sans énumérer les sous-clés à chaque fois, ce qui irait à l'encontre d'une bonne partie du but.

Des idées?

Répondre

1

Malheureusement, oui. Vous devez probablement mettre en cache toutes les valeurs d'intérêt pour votre code, et mettre à jour ce cache vous-même chaque fois que vous obtenez un déclencheur de modification, ou bien configurer plusieurs observateurs, un sur chacun des éléments de données individuels d'intérêt. Comme vous l'avez noté, la deuxième solution devient très lourde.

Si vous pouvez implémenter le code requis dans .Net, vous pouvez obtenir le même effet plus élégamment via RegistryEvent and its subclasses.