我遇到了让以下简单代码正确运行的问题:
#include <process.h>
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;
}
注册表文件位于已编译的可执行文件所在的目录中。当我从命令行运行它时, foo.reg 成功运行,但运行上述程序只显示regedit确认窗口,并且在注册表本身中没有相应的更改。
我使用Dev-C ++编写程序,我运行的是Windows XP x64 SP2。任何帮助将不胜感激。
答案 0 :(得分:3)
system("regedit /s foo.reg");
应该在没有任何确认对话框的情况下静默导入它。 Refer here用于 regedit.exe 的命令行选项。但是,我会对有问题的注册表文件(foo.reg)持怀疑态度;检查一下是否正确。在运行之后,请确保您是否在注册表中检查了foo.reg
要修改的正确路径。
在旁注中,C标准库的system()
函数在stdlib.h
中声明,因此应该是:
#include <stdlib.h>
int main()
{
system("regedit /s foo.reg");
return 0;
}
编辑:
我认为进口已经成功;既然你已经提到它是一台64位的XP机器,我认为这个改变将在Wow6432Node
之下。例如。 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
或HKEY_CURRENT_USER\SOFTWARE\Wow6432Node
。因此,请在Wow6432Node
下查看。 See this post和MSDN了解有关此内容的更多信息。