Чего хочу добиться: есть у меня запись в реестре
[HKEY_LOCAL_MACHINE\SOFTWARE\MySoft]
[HKEY_LOCAL_MACHINE\SOFTWARE\MySoft\Test] (*)
(мной созданный ключ MySoft, в нём подключ Test)
на этом этапе я делаю сохранение с помощью RegSaveKey(), потом создаю в подключе Test переменную типа REG_SZ Test со значением "test":
[HKEY_LOCAL_MACHINE\SOFTWARE\MySoft]
[HKEY_LOCAL_MACHINE\SOFTWARE\MySoft\Test] (**)
"Test"="test"
Теперь делаю RegReplaceKey() чтобы в результате получить в реестре вариант (*). Код следующий:
SetPrivilege(SE_BACKUP_NAME, TRUE); // функции подключают нужные привилегии для сохранения/замены в реестре
SetPrivilege(SE_RESTORE_NAME, TRUE);
if(RegCreateKeyEx(
HKEY_LOCAL_MACHINE,
TEXT("SOFTWARE\\MySoft"),
0,
NULL,
REG_OPTION_BACKUP_RESTORE,
KEY_ALL_ACCESS,
NULL,
&m_hKey,
&m_dwDisposition
)!= ERROR_SUCCESS
{
// Сообщаем об ошибке
}
else
{
// Сообщаем об успешно проделанной операцией
}
//Далее создаем подключ Test
//Сохранение провожу следюущим образом:
LONG return_code = RegSaveKey(m_sub_hKey, TEXT("d:\\Test\\reg.bin"), NULL); // где m_sub_hKey хендл ссылается на подключ Test
// обрабатываем return_code
//Создаю в подключе переменную типа REG_SZ Test со значением "test"
// ну и:
LONG return_code = RegReplaceKey(m_hKey,
TEXT("Test"),
TEXT("d:\\Test\\reg.bin"),
NULL
);
// обрабатываем return_code
Говорит, что неправильный параметр функции. Не могу понять какой именно.