windows
windows中写入开机启动的地方有两种,第一种是应用于整个计算机,但是需要管理员权限,第二种是应用于计算机的当前用户,一般写入第二种就可以了
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
//开机启动写入注册表当中“HKEY_CURRENT_USER”不需要管理员权限所以写在此项当中
#ifdef Q_OS_WIN //判断系统是windows还是linux
QSettings *reg = new QSettings(“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run”, QSettings::NativeFormat);
QString appName = QApplication::applicationName();
QString appPath = QDir::toNativeSeparators(QCoreApplication::applicationFilePath());
if (checked)
{
reg->setValue(appName, appPath);
}
else
{
reg->remove(appName);
}
delete reg;
#endif
//linux
原理和操作
在 /etc/xdg/autostart 目录下存放着开机自启动的“快捷方式”(.desktop)文件,我们可以为自己程序写一个.desktop文件,然后放到这里来,实现开机自启动。
在程序所在的文件夹下创建一个*.desktop的文件,名称可以自己起,后缀为.desktop。
.desktop文件制作(注意最后的权限问题):https://blog.csdn.net/u011198687/article/details/121806095?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-0-121806095-blog-86176905.pc_relevant_antiscanv2&spm=1001.2101.3001.4242.1&utm_relevant_index=3
两个命令:
sudo cp .desktop /etc/xdg/autostart/
sudo rm -f /etc/xdg/autostart/.desktop
//启动时检查一下autostart 中是否有这个文件
QString linux_appName = AppName;
QFileInfo file(“/etc/xdg/autostart/”+linux_appName);
if(file.exists())
{
ui->startPowerOnCheckbox->setChecked(true);
}
else
{
ui->startPowerOnCheckbox->setChecked(false);
}
/* 开机启动的设置和删除 */
//etc/xdg/autostart 是linux的文件启动位置
QString linux_appName = AppName; //这里的AppName我在上面定义了一个宏
QString set_uos_PowerOn = “pkexec cp /opt/apps/cn.bigant.im/entries/applications/” + linux_appName +" “+”/etc/xdg/autostart";
QString removePowerOn = “pkexec rm -f /etc/xdg/autostart/” + linux_appName;
if(checked)
{
system(set_uos_PowerOn.toLatin1());
}
else
{
system(removePowerOn.toLatin1());
}