Utilisation de C ++ pour importer des fichiers de registre

J’ai quelques problèmes à obtenir le code simple suivant pour qu’il s’exécute correctement:

#include  int main( void ) { system("foo.reg"); //why does this NOT WORK?! //system("reg import foo.reg"); //why does this NOT WORK?! //system("regedit \"foo.reg\""); //why does this NOT WORK?! return 0; } 

Le fichier de registre est situé dans le répertoire où se trouve l’exécutable compilé. foo.reg s’exécute correctement lorsque je l’exécute en ligne de commande, mais l’exécution du programme ci-dessus n’affiche que la fenêtre de confirmation de regedit et ne modifie en conséquence pas le registre.

J’ai utilisé Dev-C ++ pour écrire le programme et j’utilise Windows XP x 64 version SP2. Toute aide est la bienvenue.

system("regedit /s foo.reg"); devrait l’importer silencieusement sans aucune boîte de dialog de confirmation. Reportez-vous ici aux options de ligne de commande de regedit.exe . Cependant, je serai sceptique quant au fichier de registre (foo.reg) en question; vérifiez si c’est correct. De plus, après l’avoir exécuté, assurez-vous que vous vérifiez le bon chemin dans le registre que foo.reg est foo.reg à modifier.

Sur une note de côté, la fonction system() de la bibliothèque standard C est déclarée dans stdlib.h , elle devrait donc être:

 #include  int main() { system("regedit /s foo.reg"); return 0; } 

Modifier:

Je pense que l’importation est déjà réussie; puisque vous avez mentionné qu’il s’agissait d’une machine XP 64 bits, je pense que le changement se situera sous le Wow6432Node . Par exemple, HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node ou HKEY_CURRENT_USER\SOFTWARE\Wow6432Node . Alors vérifiez également sous le Wow6432Node . Voir ce post et MSDN pour plus d’informations à ce sujet.