Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

запись в реестр

35K
20 декабря 2009 года
Mediv63
50 / / 08.12.2009
HKEY hkey;
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, помогите плиз с решение этой проблемы
41K
20 декабря 2009 года
Alex57
44 / / 22.02.2009
Цитата: Mediv63

При выполнение этого кода в значение ключа с именем myprogram записывается какая то китайская ересь



Если в regedit в контекстном меню выбрать "Изменить значение двоичного параметра", то можно увидеть, что действительно
записалось C:\123.txt :)
Только на один символ приходится по одному байту.
А в REG_SZ каждый символ кодируется двумя байтами.


Код:
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;
35K
20 декабря 2009 года
Mediv63
50 / / 08.12.2009
спасибо большое, а то я целый день мучался с этим реестром
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог