C++添加到注册表

标签 c++ registry

所以,代码对我咆哮,需要一点帮助。 错误:char * 与 cost BYTE * 不兼容。 它在咆哮:RegSetValueExA(hKey, "My App", 0, REG_SZ, buffer, sizeof(buffer)); 特别是缓冲区。

错误消息(vstudio):错误 3 错误 C2664:“RegSetValueExA”:无法将参数 5 从“char [500]”转换为“const BYTE *”{snip}\visual studio 2010\projects\reg\reg\reg.cpp 74

我的代码(注意:stemres = 可执行文件的完整路径,在 LPCWSTR 中,我已成功将其转换为 char):

HKEY hKey;
RegOpenKeyExA(HKEY_CURRENT_USER, "Software\\Microsoft\\CurrentVersion\\Run", 0, KEY_WRITE, &hKey);
// stemres = the executable path
char buffer[500];
wcstombs(buffer,stemres,500);
RegSetValueExA(hKey, "My App", 0, REG_SZ, buffer, sizeof(buffer));
RegCloseKey(hKey);
cout << "Added to registry.";

最佳答案

RegSetValueExA() 的第五个参数是 const BYTE *,它应该是 const unsigned char * 的同义词,您尝试传递 char * 到它。恐怕你必须转换它:

 RegSetValueExA(hKey, "My App", 0, REG_SZ, reinterpret_cast<const BYTE *>(buffer), sizeof(buffer));

关于C++添加到注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29375961/

相关文章:

c# - 在不修改注册表项的情况下读取 Excel InterMixed DataType

c++ - 是否有必要在 Windows 注册表中转义字符串中的斜杠?

c++ - 类中的 static const std::array

c++ - 连续调用 RegGetValue 会为同一字符串返回两种不同的大小

c# - 在 .net core 和 .net Framework 中搜索给出不同输出的注册表项

c# - 注册表值更改错误(对象引用未设置为对象的实例)

c++ - 数组中最大数和第二大数C++问题

c++ - 不能在另一个类中声明类

c++ - std::map\std::set 包含重复键

c++ - 重载运算符中具有静态函数的模板与具有非静态函数的对象