powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с реестром
9 сообщений из 9, страница 1 из 1
Работа с реестром
    #38185816
Alex_kip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу прочитать адрес папки "рабочий стол" через реестр. Скажите, плз, что я не так делаю?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
HKEY rKey;
	unsigned char Reget[512];
	DWORD RegetPath = sizeof(Reget);
	if(RegOpenKeyEx(HKEY_CURRENT_USER,L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",0,KEY_ALL_ACCESS,&rKey) == ERROR_SUCCESS)
	{
		LPBYTE res;
		RegQueryValueEx(rKey,L"Desktop",0,0,Reget,&RegetPath);
		RegCloseKey(rKey);
	}
	printf("%s",Reget);
	return 0;
...
Рейтинг: 0 / 0
Работа с реестром
    #38185886
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_kip, обязательно через реестр это делать? Лучше с помощью SHGetKnownFolderPath() .
...
Рейтинг: 0 / 0
Работа с реестром
    #38185898
Alex_kip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazile, да, хочу еще понять как считывать данные из реестра (-:
...
Рейтинг: 0 / 0
Работа с реестром
    #38186486
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_kip, скорее всего значение не печатается т.кю возвращается Unicode строка. Попробуй такой вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
HKEY rKey;
unsigned char Reget[512];
DWORD RegetPath = sizeof(Reget);
if(RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"),0,KEY_ALL_ACCESS, &rKey) == ERROR_SUCCESS)
{
    LPBYTE res;
    RegQueryValueEx(rKey, TEXT("Desktop"), 0, 0, Reget, &RegetPath);
    RegCloseKey(rKey);
}
_tprintf("%s",Reget);
return 0;
...
Рейтинг: 0 / 0
Работа с реестром
    #38186526
Alex_kip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел через дебаггер, в переменной Reget хранится путь к раб столу, но почему-то после каждого символа - '\0' конец строки, т.е. результат: "С'\0':'\0'\\'\0'D'\0'o'\0'c'\0'...".
Не понимаю, как так
...
Рейтинг: 0 / 0
Работа с реестром
    #38186547
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_kip, юникод.
...
Рейтинг: 0 / 0
Работа с реестром
    #38186550
Alex_kip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как конвертировать в обычный char*
...
Рейтинг: 0 / 0
Работа с реестром
    #38186555
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_kip, выводить можно
Код: plaintext
1.
2.
	wcout<<(wchar_t *)Reget<<endl;
	wprintf(L"%s",Reget);


у меня и так и так работает

Преобразовать Unicode в ansi(Windows):
http://msdn.microsoft.com/en-us/library/windows/desktop/dd374130(v=vs.85).aspx
...
Рейтинг: 0 / 0
Работа с реестром
    #38186618
Alex_kip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем большое)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с реестром
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]