мне нужно залесть в HKEY_CURRENT_USER, ну и там дальше получить значения(если точно то в HKEY_CURRENT_USER\Volatile Environment) можно ли на qt залесть туда и получить соответствующие значения?
Смотри: http://www.doc.crossplatform.ru/qt/4.5.0/qsettings.html#accessing-the-windows-registry-directly, там есть пример чтения и записи в реестр windows.
к сожалению через QSettings не все ветки реестра доступны (к такому выводу пришли в своё время на прогорге)
тему разделил: http://www.forum.crossplatform.ru/index.php?showtopic=5594
а как в реестр, в Run, записать значение, пробовал вот так:
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;
}
}
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)