HKEY hkey;
//char *szBuf;
//szBuf = "C:\\123.txt";
wchar_t wszBuf[] = [COLOR="Red"]L"C:\\123.txt";[/COLOR]
cout << sizeof(wszBuf) << endl; // 22
RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Microsoft\\Windows\\Currentversion\\Run"), 0, KEY_SET_VALUE, &hkey);
//RegSetValueEx (hkey, _T("myprogram"), 0, REG_SZ, (LPBYTE) szBuf, strlen(szBuf) + 1);
RegSetValueEx (hkey, _T("myprogram"), 0, REG_SZ, (LPBYTE) wszBuf, [COLOR="red"]sizeof(wszBuf)[/COLOR] );
RegCloseKey(hkey);
return 0;
запись в реестр
char *szBuf;
szBuf = "C:\\123.txt";
RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Microsoft\\Windows\\Currentversion\\Run"), 0, KEY_SET_VALUE, &hkey);
RegSetValueEx (hkey, _T("myprogram"), 0, REG_SZ, (LPBYTE) szBuf, strlen(szBuf) + 1);
RegCloseKey(hkey);
При выполнение этого кода в значение ключа с именем myprogram записывается какая то китайская ересь, а должно записываться C:\\123.txt, помогите плиз с решение этой проблемы
Цитата: Mediv63
При выполнение этого кода в значение ключа с именем myprogram записывается какая то китайская ересь
Если в regedit в контекстном меню выбрать "Изменить значение двоичного параметра", то можно увидеть, что действительно
записалось C:\123.txt :)
Только на один символ приходится по одному байту.
А в REG_SZ каждый символ кодируется двумя байтами.
Код:
спасибо большое, а то я целый день мучался с этим реестром