Не могу создать ключ и строковые значения в реестре на winapi.
треде про ярлык, пишу инсталлятор. Снова косяк.
Пытаюсь создать ключ реестра по адресу
Кстати, я правильно понял, что сюда можно занести запись об установке, или я ошибся? (ключей тут меньше, чем установленного софта, онако flylink dc++ тут и в одной статье писали про этот ключ).
Используя код отсюда с msdn, пытаюсь адаптировать его под занесение строки:
title точно имеет нормальное значение.
Программа компилится, запускается, работает, пишет, что значение DisplayName создано, но ни ключа ни записи нету. В чем может быть ошибка?
Как уже писал в
Пытаюсь создать ключ реестра по адресу
Код:
Software\Microsoft\Windows\CurrentVersion\Uninstall\
Кстати, я правильно понял, что сюда можно занести запись об установке, или я ошибся? (ключей тут меньше, чем установленного софта, онако flylink dc++ тут и в одной статье писали про этот ключ).
Используя код отсюда с msdn, пытаюсь адаптировать его под занесение строки:
Код:
char* title = new char[]; //Название программы
...
GetPrivateProfileStringA("main","title", "Unknown application",title,99,ini.c_str()); // Получаем название
...
GetPrivateProfileStringA("main","title", "Unknown application",title,99,ini.c_str()); // Получаем название
title точно имеет нормальное значение.
Код:
// Пишем в реестр http://msdn.microsoft.com/en-us/library/ms838625.aspx
HKEY hkey;
DWORD dwDisposition;
DWORD dwType, dwSize;
string keypath = "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + string(title); // Задаем полный путь до ключа
cout << "keypath=" << keypath.c_str() << endl;
//string unpath = fulltarget + "\\uninstall.exe";\
if(RegCreateKeyExA(HKEY_LOCAL_MACHINE, keypath.c_str(), 0, NULL, 0, 0, NULL, &hkey, &dwDisposition)==ERROR_SUCCESS)
{
dwType = REG_SZ;
dwSize = sizeof(title) / sizeof (char);
if (SUCCEEDED(RegSetValueExA(hkey, "DisplayName", 0, dwType, (PBYTE)&title, dwSize)))
cout << "Value created";
else
cout << "Error creating value";
/*
dwSize = unpath.length();
RegSetValueEx(hkey, "UninstallString", 0, dwType, (BYTE)unpath.c_str(), dwSize);
*/
RegCloseKey(hkey);
}
HKEY hkey;
DWORD dwDisposition;
DWORD dwType, dwSize;
string keypath = "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + string(title); // Задаем полный путь до ключа
cout << "keypath=" << keypath.c_str() << endl;
//string unpath = fulltarget + "\\uninstall.exe";\
if(RegCreateKeyExA(HKEY_LOCAL_MACHINE, keypath.c_str(), 0, NULL, 0, 0, NULL, &hkey, &dwDisposition)==ERROR_SUCCESS)
{
dwType = REG_SZ;
dwSize = sizeof(title) / sizeof (char);
if (SUCCEEDED(RegSetValueExA(hkey, "DisplayName", 0, dwType, (PBYTE)&title, dwSize)))
cout << "Value created";
else
cout << "Error creating value";
/*
dwSize = unpath.length();
RegSetValueEx(hkey, "UninstallString", 0, dwType, (BYTE)unpath.c_str(), dwSize);
*/
RegCloseKey(hkey);
}
Программа компилится, запускается, работает, пишет, что значение DisplayName создано, но ни ключа ни записи нету. В чем может быть ошибка?