QSettings S_AutoRun;
QString param="appname";
QString exepath=QDir::toNativeSeparators(QApplication::applicationFilePath());
//пробовал с обоими вариантами сепараторов
QString regpath=QString("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\")+param;
// QString regpath=QString("HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run/")+param;
S_AutoRun.setValue(regpath,QVariant(exepath));
#include <windows.h>
void SetAppAutorunToReg(QString ParamName,bool bErase=false)
{
//корректируем автозагрузку
//ключ
const char* pch_regpath="Software\\Microsoft\\Windows\\CurrentVersion\\Run";
//имя параметра
QString param=ParamName;
std::vector<wchar_t> wch_param((param.length()+1),0);
param.toWCharArray(&wch_param[0]);
//значение параметра
std::vector<wchar_t> wch_exepath;
if(!bErase)
{
//запишем в параметр путь к экзешнику
QString exepath=QDir::toNativeSeparators(QApplication::applicationFilePath());
wch_exepath.resize((exepath.length()+1),0);
exepath.toWCharArray(&wch_exepath[0]);
}
HKEY k=0;
DWORD dwdRes=RegOpenKeyExA(HKEY_CURRENT_USER,pch_regpath,0,KEY_ALL_ACCESS,&k);
if(dwdRes==ERROR_SUCCESS)
{
if(bErase)
{
RegDeleteValueW(k,&wch_param[0]);
}
else
{
RegSetValueExW(k, &wch_param[0], 0, REG_SZ,
(BYTE*)&wch_exepath[0],
wch_exepath.size()*sizeof(wch_exepath[0])
);
}
RegCloseKey(k);
k=0;
}
}