У меня проблема в том, что мое приложение вводит неверные данные в реестр (вместо пути к файлу оно вводит такие символы, как «㩃 啜 敳 獲 啜 敳 屲 灁»), и я не знаю, в чем проблема Это, соответствующий исходный код ниже (включает, и т. д. были удалены).
stringstream ss;
char* file_path = getenv("APPDATA");
strcat(file_path, "\\Application.exe");
ss << file_path;
ss >> file_path_string;
CA2W unicodeFile_path(file_path);
cout << "Downloading File";
HRESULT hr = URLDownloadToFile ( NULL, _T("http://example.com/application.exe"), unicodeFile_path, 0, NULL );
cout << "Done" << endl;
cout << "Adding to registry" << endl;
HKEY hKey;
CA2W registryLocation("Software\\Microsoft\\Windows\\CurrentVersion\\Run");
CA2W registryKey("Application");
// Check registry if exists, otherwise create.
RegCreateKeyEx(HKEY_CURRENT_USER,
registryLocation,
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_WRITE,
NULL,
&hk,
&dwDisp);
// Store reg value
RegSetValueEx(hk,
registryKey,
NULL,
REG_SZ,
(const BYTE*)file_path_string.c_str(),
file_path_string.size() + 1);
Любая помощь будет оценена.
RegSetValueEx ожидает (для REG_SZ), что передаваемые данные являются Unicode, если вы не определяете UNICODE в своей среде. Но .c_str скорее всего не поток Unicode.
Других решений пока нет …