在 c++ 中写入注册表时出错
Error writing to registry in c++
我正在尝试对注册表进行一些更改,在尝试了其他一些事情之后,我现在正在尝试导入注册表文件。我确信我做对了 - 直到我收到错误"无法导入路径\reg_file.reg:指定的文件不是注册表脚本。您只能从注册表编辑器中导入二进制注册表文件。
我一直在导出、使用记事本编辑并重新导入注册表文件进行测试 - 但我不知道如何从 c++ 创建它们。
我放置在 reg 文件中的内容是从与我想做的事情相关的所有HKEY_CURRENT_USER记录中复制的(我在完成新条目应该手动完成的步骤后导出了这些记录)。所以他们应该在正确的地方...
我用了
input_stream >> reg_entry; //from original file
output_stream << reg_entry;
写入文件 - 因为它看起来不是二进制的(并且必须根据我从注册表中读取的内容进行处理)。
我该如何完成这项工作?我找不到解决方案,老实说,注册表让我感到害怕。
不应使用输入和输出运算符(>> 和 <<)进行二进制文件读写。请改用读写接口。
ifstream fin("1.reg", ios::in|ios_base::binary);
ofstream fout("2.reg", ios::out|ios_base::binary);
if (fin.is_open() && fout.is_open())
{
fin.seekg(0, ios::end);
size_t len = fin.tellg();
if (0 != len)
{
fin.seekg(0, ios::beg);
char* buf = new char[len];
fin.read(buf, len);
// Change the content here
fout.write(buf, len);
delete []buf;
}
}
fin.close();
fout.close();
相关文章:
- 有没有任务栏API可以立即应用注册表更改
- 检查注册表项是否链接到(或副本)另一个注册表项
- 禁用地址共享注册表不起作用
- 如何从注册表项中提取配置单元和注册表名称
- 注册表正在设置 1 个字符
- 清理"QSettings"注册表项的最佳方法(Windows上的Qt 5)
- 在 c++ 中编辑注册表项
- 某些进程的注册表限制
- 在编译时生成某种子类/类型注册表?
- 如何测试注册表项是否存在?
- 注册表-获取值(而不是键)上次更改的时间和键创建日期
- 从注册表中检索已注销用户的 sid
- C++ 中的哈希表出错
- 如何正确检查 c++ 是否存在注册表项?
- 如何在不使用任何数据库的情况下制作动态注册表单?
- 强制资源管理器重新加载注册表值
- 以编程方式锁定注册表项以避免并发问题
- 如何应用注册表模式使"select class depend on input"遵守开放封闭原则?
- 如何恢复注册表项的有效权限?C++
- 在 c++ 中写入注册表时出错