O RegnotifyChangeKey é tão grosseiro quanto parece?
Pergunta
Eu tenho usado ReadDirectoryChangesW
para monitorar uma parte específica do sistema de arquivos. Ele fornece um bom nome de caminho parcial para o arquivo ou diretório que mudou junto com uma pista sobre a natureza da mudança. Isso pode ter me estragado.
Eu também preciso monitorar uma parte específica do registro, mas parece que RegNotifyChangeKeyValue
é muito grosso. Vai me dizer isso algo Sob a chave dada mudou, mas não parece querer me dizer o que poderia ter sido. Desapontamento!
A parte do registro em questão é arbitrariamente profunda, então enumerando todas as sub-teclas e chamando RegNotifyChangeKeyValue
para cada um provavelmente não é uma ideia quente, porque acabarei tendo que superar MAXIMUM_WAIT_OBJECTS
. Além disso, eu teria que ajustar o conjunto de chaves que eu passei RegNotifyChangeKeyValue
, o que seria uma quantidade razoável de esforço para fazer sem enumerar as sub-teclas todas as vezes, o que derrotaria uma quantidade razoável do objetivo.
Alguma ideia?
Solução
Infelizmente sim. Você provavelmente precisa armazenar em cache todos os valores de interesse do seu código e atualizar esse cache sempre que obtiver um gatilho de alteração, ou então configure vários observadores, um em cada um dos itens de interesse individuais de dados. Como você observou, a segunda solução fica pesada muito rapidamente.
Se você pode implementar o código necessário no .net, poderá obter o mesmo efeito com mais elegância via RegistryEvent e suas subclasses.