Tag: 注册表

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

我有一些问题,让以下简单的代码正确运行: #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; } 注册表文件位于已编译的可执行文件所在的目录中。 当我从命令行运行它时, foo.reg运行成功,但运行上面的程序只显示regedit确认窗口,并且在注册表本身没有相应的更改。 我使用Dev-C ++编写程序,我运行的是Windows XP x64 SP2。 任何帮助将不胜感激。

使用win32或其他库导入.reg文件

我的问题与这个问题有点相关,但这不是我的目标: 以编程方式将.reg文件合并到win32注册表中 我想要做的是创建一个程序,可以使用win32或其他库导入.reg文件。 我试着环顾四周但在那部分失败了。 像regedit.exe / s函数。 是否可以在不使用regedit.exe或reg.exe的情况下执行此操作? 所以..没有系统(“myfile.reg”)或类似ShellExecute()使用reg.exe或regedit.exe 谢谢!

检查是否存在注册表项

我正在寻找一种干净的方法来检查是否存在注册表项。 我曾假设如果我试图打开一个不存在的密钥, RegOpenKey会失败,但事实并非如此。 我可以使用字符串处理来查找并打开我正在寻找的那个的父键,然后枚举该键的子键以查明我感兴趣的那个是否存在,但这感觉就像一个性能猪和一种奇怪的方式来实现这样一个简单的function。 我猜你可以用某种方式使用RegQueryInfoKey ,但MSDN并没有提供太多关于如何使用的细节,即使它是可能的。 更新 :我需要Win32 api中的解决方案,而不是托管代码,.NET或任何其他库。 MSDN中的文档似乎表明您应该能够打开一个读取权限的密钥,如果它不存在则会收到错误,如下所示: lResult = RegOpenKeyEx (hKeyRoot, lpSubKey, 0, KEY_READ, &hKey); if (lResult != ERROR_SUCCESS) { if (lResult == ERROR_FILE_NOT_FOUND) { 但是,当我尝试这个时,我得到了ERROR_SUCCESS 。 更新2 :我的确切代码是这样的: HKEY subKey = nullptr; LONG result = RegOpenKeyEx(key, subPath.c_str(), 0, KEY_READ, &subKey); if (result != ERROR_SUCCESS) { …但result是ERROR_SUCCESS ,即使我正在尝试打开一个不存在的密钥。 更新3 :看起来你们是对的。 这在一个特定的测试示例(神秘地)上失败了。 如果我在任何其他键上尝试它,它将返回正确的结果。 […]