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.