RegNotifyChangeKeyValue настолько груб, как кажется? - PullRequest
2 голосов
/ 02 октября 2010

Я использую ReadDirectoryChangesW для мониторинга определенной части файловой системы. Он довольно неплохо предоставляет частичный путь к файлу или каталогу, который изменился вместе с подсказкой о природе изменения. Это, возможно, испортило меня.

Мне также нужно отслеживать определенную часть реестра, но выглядит, как будто RegNotifyChangeKeyValue очень грубый. Он скажет мне, что что-то под данным ключом изменилось, но, похоже, не хочет говорить мне, что это могло быть. Вот досада!

Часть рассматриваемого реестра произвольно глубока, поэтому перечисление всех подключей и вызов RegNotifyChangeKeyValue для каждого, вероятно, не горячая идея, потому что в конечном итоге мне придется преодолеть MAXIMUM_WAIT_OBJECTS. Кроме того, мне пришлось бы настроить набор ключей, которые я передал, на RegNotifyChangeKeyValue, что было бы довольно трудоемким делом без перечисления подключей каждый раз, что могло бы победить изрядное количество целей.

Есть идеи?

1 Ответ

1 голос
/ 02 октября 2010

К сожалению, да. Возможно, вам придется кэшировать все значения, представляющие интерес для вашего кода, и обновлять этот кэш самостоятельно всякий раз, когда вы получаете триггер изменения, или же настроить несколько наблюдателей, по одному на каждый из отдельных элементов данных, представляющих интерес. Как вы заметили, второе решение очень быстро становится громоздким.

Если вы можете реализовать необходимый код в .Net, вы можете получить тот же эффект более элегантно с помощью RegistryEvent и его подклассов .

...