所以,代码对我咆哮,需要一点帮助。
错误: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/