使用C ++导入注册表文件

时间:2010-02-20 00:21:43

标签: c++ c windows registry

我遇到了让以下简单代码正确运行的问题:

#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。任何帮助将不胜感激。

1 个答案:

答案 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\Wow6432NodeHKEY_CURRENT_USER\SOFTWARE\Wow6432Node。因此,请在Wow6432Node下查看。 See this postMSDN了解有关此内容的更多信息。