所以,代码对我咆哮,需要一些帮助。
错误: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.";
答案 0 :(得分:1)
RegSetValueExA()
的第五个参数是const BYTE *
,它应该是const unsigned char *
的同义词,并且您尝试将char *
传递给它。我担心你必须转换它:
RegSetValueExA(hKey, "My App", 0, REG_SZ, reinterpret_cast<const BYTE *>(buffer), sizeof(buffer));