Кто нибудь юзал эту функцию? Вроде все правильно делаю, но она создает пустой .reg файл. не знаю как сохранить часть реестра. Использовать можно только WinAPI, без MFC.
Кто нибудь юзал эту функцию? Вроде все правильно делаю, но она создает пустой .reg файл. не знаю как сохранить часть реестра. Использовать можно только WinAPI, без MFC.
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
4 июня 2009 в 0:00
о спс большое, теперь надо будет разобраться с привилегиями)
3 июня 2009 в 23:04
Вот нашёл доп. инфу – твой же вопрос перевёл на инглишь (хотя его не знаю) и погуглил. там к концу есть пример кода, только проверку на успех AdjustTokenPriveleges добавь и ZeroMemory() для tp сделай: //www.programmersheaven.com/mb/CandCPP/192684/1...
Там ещё какая-то проблема с RegRestore обсуждается, мож тебе пригодится =)
3 июня 2009 в 23:03
Ага, понял, кажись. "The calling process must have the SE_BACKUP_NAME privilege enabled.". Ты же наверняка не в 98-й тестишь =) Тебе необходимо заюзать AdjustTokenPrivileges() . Надеюсь, теперь ты понимаешь, почему важно и запрашиваемые права ограничивать – не все пользователи под админами сидят (что правильно =). Заработало?
Кстати, RegSaveKey сохранит вроде как в бинарном формате. Для охранения в текстовом используй RegSaveKeyEx
3 июня 2009 в 21:01
собственно так и делаю.. вот код:
LPCTSTR CFG_PATH = TEXT("SOFTWARE\\Nokia")
if (RegOpenKeyEx( HKEY_CURRENT_USER, CFG_PATH, 0, KEY_QUERY_VALUE, &hKey )== ERROR_SUCCESS);
{
MessageBox( hWnd, "TheKey was opened", "Save",
MB_OK | MB_ICONINFORMATION );
}
if ( RegSaveKey( hKey, "TheKey.reg", NULL ) == ERROR_SUCCESS )
{
MessageBox( hWnd, "TheKey was saved", "Save",
MB_OK | MB_ICONINFORMATION );
}
RegCloseKey( hKey );
3 июня 2009 в 21:01
при отладке в переменно hKey получаю значение 0×000017d4 {unused=??? }HKEY__ *
3 июня 2009 в 21:01
создает пустой рег файл, хз почему…
3 июня 2009 в 18:02
А в чём смысл использования RegCreateKey?! В твоём случае правильно использовать RegOpenKeyEx, разве нет?
Скорее, ты просто создаёшь пустой раздел – тебе по нему пустой файл и создаётся. Или получаешь ошибку – ты проверил результат выполнения функции RegCreate/RegSave? Чему равен hKey посмотрел?
Пример:
LPCTSTR CFG_PATH = TEXT("Software\\Pegas\\Stereo 2.0");
HKEY cfg;
if(RegOpenKeyEx(HKEY_CURRENT_USER,CFG_PATH,0,KEY_QUERY_VALUE,&cfg)==ERROR_SUCCESS)
{
…
}
P.S. Кстати, ограничь уровень необходимых привелегий – указывать "ALL_ACCESS" неправильно. Для Open достаточно тока чё-нить типа KEY_QUERY_VALUE
3 июня 2009 в 18:02
Да, и покажи сам вызов RegSave (а лучше выложи весь кусок кода, ведь несложно же)
3 июня 2009 в 2:03
извиняюсь
3 июня 2009 в 2:03
передавал хэндл полученный след образом:
RegCreateKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\KeyRoot\\Test\\Test1", 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL,
&hKey, &dwDisp );
3 июня 2009 в 2:02
"И" – тебе намекнули, чтоб ты написал, что передаёшь в качестве HKEY? А ещё лучше – кусок кода + значения переменных, посмотренные в отладчике. Мы ж не телепаты =) ИМХО я согласен с Леонидом, что ты просто неверный HKEY передал (это и к вопросу о сохранении части реестра =).
3 июня 2009 в 1:00
и?
2 июня 2009 в 22:03
hKey [in]
A handle to an open registry key.