Имеется код, который должен задавать значение дефолтному ключу по заданному пути в реестре. Проблема заключается в том, что запуская прогу с одного пути, все отрабатывает нормально, но при запуске из например прогдаты или аппдаты значение не ставится. Проблема именно в установке дефолтного значения, значения с именем ставятся без проблем. Софт x32. Самый прикол в том, что прога падает без единой ошибки, пытался отловить дебаггером, ничего не дает, как будто где-то под капотом процесс сам себя убивает. В чем может быть проблема?
UPD: Выяснил опытным путем, что если писать в реестр значение вида
C:
wchar_t modulepath[MAX_PATH];
API(KERNEL32, GetModuleFileNameW)(0, modulepath, MAX_PATH);
API(KERNEL32, lstrcatW)(modulepath, L"\0");
HKEY key;
if (API(ADVAPI32, RegCreateKeyW)(HKEY_CURRENT_USER, L"key_path", &key) == ERROR_SUCCESS)
{
wprintf(L"Opened key successfully\n");
wprintf(modulepath);
if (API(ADVAPI32, RegSetKeyValueW)(key, L"", L"", REG_SZ, modulepath, lstrLenW(modulepath) * sizeof(wchar_t)) == ERROR_SUCCESS) //default value
{
wprintf(L"Successfully set default value\n");
if (API(ADVAPI32, RegSetKeyValueW)(key, L"", L"non-default_value", REG_SZ, L"", 0) == ERROR_SUCCESS)
{
wprintf(L"Successfully set non-default value\n");
}
else
Exit(L"error setting non-default value");
}
else
Exit(L"error setting default value");
UPD: Выяснил опытным путем, что если писать в реестр значение вида
C:\\ProgramData, то все ок, однако стоит лишь записать C:\\ProgramData\\test и приложение начинает крашиться. И такое кстати только с програмдатой...
Последнее редактирование: