设置Qt程序在Windows开机后自动运行

(转自:http://blog.csdn.net/weiren2006/article/details/7443362) 

主要原理是修改Windows的注册表来实现的,Qt的QSettings提供了访问ini,注册表的功能

//读取注册表的信息,让程序自启动
voidMainWindow::Readregedit(bool isAutoRun)
{
    QSettings*reg=newQSettings("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",QSettings::NativeFormat);
    //开机自动运行
    if(isAutoRun)
    {
         reg->setValue("app",QApplication::applicationFilePath());
    }
    else
    {
      reg->setValue("app","");
    }
}

//开机自启动,主窗体隐藏 if(argc>1&&(argv[1]==(char*)"//min")) {   w.hide(); } else {   w.showNormal(); }

PS:开机启动的时候,小托盘图标有可能不能显示出来,可以利用资源文件里面的图标,
     作为小托盘,这样就可以解决这个问题。


让软件在系统启动时自动运行,可通过修改注册表实现。

在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun中添加需启动的程序路径,代码如下:

voidautoStart(boolflag)
{
//写入注册表,开机自启动
HKEYhKey;
//找到系统的启动项
LPCTSTRlpRun=(wchar_t*)QString("Software\Microsoft\Windows\CurrentVersion\Run").utf16();
//打开启动项Key
longlRet=RegOpenKeyEx(HKEY_LOCAL_MACHINE,lpRun,0,KEY_WRITE,&hKey);
if(lRet==ERROR_SUCCESS)
{
DWORDdwRet=QApplication::applicationFilePath().length()*2;
//添加一个子Key,并设置值
if(flag==true)
{
lRet=RegSetValueEx(hKey,(WCHAR*)QString("test").utf16(),0,REG_SZ,
(BYTE*)QApplication::applicationFilePath().utf16(),dwRet);
}
else
{
lRet=RegSetValueEx(hKey,(WCHAR*)QString("test").utf16(),0,REG_SZ,
(BYTE*)"",dwRet);
}
//关闭注册表
RegCloseKey(hKey);
if(lRet!=ERROR_SUCCESS)
{
qDebug("error");
}
}
}
原文地址:https://www.cnblogs.com/FindSelf/p/3716741.html