Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2010, 08:37   #1
di91
Новичок
Джуниор
 
Регистрация: 07.11.2010
Сообщений: 3
По умолчанию странно работает RegSetValueEx

Всем привет. Столкнулся с такой проблемой: данный кусок кода заносит значение не в HKEY_LOCAL_MACHINE\SOFTWARE\Microso ft\Windows\CurrentVersion\Run а в HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432 Node\Microsoft\Windows\CurrentVersi on\Run. В чём проблема? Если кто то уже подымал похожий вопрос - киньте ссылку.

//-------------------------------------
HKEY hK;
LPTSTR Op=L"SOFTWARE\\Microsoft\\Windows\\ CurrentVersion\\Run";
LPTSTR KeyV=L"C:\\Windows\\key.exe";
LPTSTR KeyN=L"DimKey";
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, Op, NULL, KEY_SET_VALUE ,&hK)!=ERROR_SUCCESS)
MessageBox(NULL,L"FAIL1",L"key",NUL L);
if(RegSetValueEx(hK, KeyN, NULL,REG_SZ,(LPBYTE)KeyV,(DWORD)(ls trlen(KeyV)+1)*sizeof(TCHAR))!=ERRO R_SUCCESS)
MessageBox(NULL,L"FAIL2",L"key",NUL L);
if(RegCloseKey(hK)!=ERROR_SUCCESS)
MessageBox(NULL,L"FAIL4",L"key",NUL L);
\\---------------------------------------

Всё проходит без ошибок, сообщения не выскакивают, но вот значение пишет не туда...

Последний раз редактировалось di91; 07.11.2010 в 08:40.
di91 вне форума Ответить с цитированием
Старый 07.11.2010, 11:44   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

http://www.transl-gunsmoker.ru/2010/10/64.html
http://msdn.microsoft.com/en-us/libr...72(VS.85).aspx
http://support.microsoft.com/kb/256986/ru
http://blog.not-a-kernel-guy.com/2007/05/07/181
http://blog.not-a-kernel-guy.com/2009/06/09/571
http://blog.not-a-kernel-guy.com/2009/12/08/703

(подсказка: то, что используется Wow6432Node вам должно быть по барабану. Вы пишите в SOFTWARE\Microsoft\Windows\CurrentV ersion\Run. Вы видите его как SOFTWARE\Microsoft\Windows\CurrentV ersion\Run. Он работает как SOFTWARE\Microsoft\Windows\CurrentV ersion\Run. Вывод? Он и есть SOFTWARE\Microsoft\Windows\CurrentV ersion\Run. По-крайней мере, для вашей программы)
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.

Последний раз редактировалось GunSmoker; 07.11.2010 в 11:55.
GunSmoker вне форума Ответить с цитированием
Старый 07.11.2010, 12:00   #3
di91
Новичок
Джуниор
 
Регистрация: 07.11.2010
Сообщений: 3
По умолчанию

но почему значение прописывается в Wow6432Node? Что за самодеятельность? Ведь в коде SOFTWARE\\Microsoft\\Windows\\ CurrentVersion\\Run!
di91 вне форума Ответить с цитированием
Старый 07.11.2010, 12:07   #4
di91
Новичок
Джуниор
 
Регистрация: 07.11.2010
Сообщений: 3
По умолчанию

Всё, спасибо, нашёл, надо использовать KEY_WOW64_64KEY.
Так всё ок:
RegOpenKeyEx(HKEY_LOCAL_MACHINE, Op, NULL, KEY_SET_VALUE|KEY_WOW64_64KEY ,&hK)
di91 вне форума Ответить с цитированием
Старый 07.11.2010, 15:27   #5
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Ещё раз вдумчиво почитайте по ссылкам и особенно - подсказку.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странно записанные переменные ImmortalAlexSan Общие вопросы Delphi 5 15.03.2010 17:54
Странно ..... HellMercenariess О форуме и сайтах клуба 1 07.08.2009 12:55
Странно работает эзешник на другом компьютере runtimeLibrary(Multi-threaded (/MT) LostSoul Общие вопросы C/C++ 11 20.04.2009 23:25
Странно Viteef Свободное общение 10 03.07.2007 03:28
Помогите, очень странно... nonono Общие вопросы Delphi 3 23.05.2007 23:39