J'essaie d'utiliser RegNotifyChangeKeyValue pour surveiller les modifications d'une clé de registre 64 bits. Pour ouvrir cette clé à partir d'une application 32 bits, nous devons ajouter l'indicateur d'accès KEY_WOW64_64KEY.Utilisez RegNotifyChangeKeyValue pour surveiller les modifications apportées à une clé 64 bits
Malheureusement, je ne peux pas sembler être en mesure de surveiller les changements à cette clé, seulement son homologue de 32 bits.
J'inclus un projet de démonstration avec l'unité que j'utilise pour implémenter la surveillance du registre. Téléchargez-le ici: RegMonitor
Étapes pour reproduire le problème:
recompiler le programme. Exécuter en tant qu'administrateur. Cliquez sur le bouton Démarrer.
Ouvrez regedit et accédez à
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run
Ajouter une nouvelle valeur là-bas. RegMonitor ne détectera aucun changement.
Accédez à
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Run
Ajouter une nouvelle valeur là-bas. RegMonitor détectera ce changement.
J'ai ajouté le drapeau d'accès KEY_WOW64_64KEY lors de l'ouverture du registre, mais il n'a toujours pas de tout notify modifications pour corriger la clé, seule la redirection Wow6432Node.
Une idée s'il est possible d'utiliser RegNotifyChangeKeyValue pour surveiller cette clé?
OK, j'ai créé l'exemple d'application à partir d'ici: http://msdn.microsoft.com/en-us/library/windows/desktop/ms724892(v=vs.85).aspx Ensuite, je l'ai modifié pour utiliser ' KEY_WOW64_64KEY' lors de l'ouverture de la clé. Et puis le code m'a notifié avec succès d'un changement dans la partie 64 bits du registre. Donc non, l'API fonctionne bien avec 'KEY_WOW64_64KEY' de l'émulateur. –
En aparté, vous avez codé en dur 'Wow6432Node' dans votre application. C'est toujours une mauvaise idée. Je crois que cela a été fait uniquement dans le but de tester cette application. –
L'application de démonstration est juste à des fins de test, c'est pourquoi j'ai dur codé le drapeau dans celui-ci. – smartins