c ++添加到注册表

时间:2015-03-31 18:36:02

标签: c++ registry

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

错误讯息(vstudio):Error 3 error C2664: 'RegSetValueExA' : cannot convert parameter 5 from 'char [500]' to '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.";

1 个答案:

答案 0 :(得分:1)

RegSetValueExA()的第五个参数是const BYTE *,它应该是const unsigned char *的同义词,并且您尝试将char *传递给它。我担心你必须转换它:

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