设置开机自启
- windows 修改注册表
"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
- linux 把desktop放在
~/.config/autostart
#ifndef AUTORUNMANAGER_H
#define AUTORUNMANAGER_H
#include <QString>
#include <QSettings>
#include <QDir>
#include <QFile>
#include <QTextStream>
#include <QDebug>
class AutoRunManager {
public:
static void SetAutoRun(const QString& appName, const QString& appPath)
{
#if defined(Q_OS_WIN)
QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run",
QSettings::NativeFormat);
settings.setValue(appName, QDir::toNativeSeparators(appPath));
#elif defined(Q_OS_LINUX)
QString autostartPath = QDir::homePath() + "/.config/autostart";
QDir dir;
if (!dir.exists(autostartPath)) {
dir.mkpath(autostartPath);
}
QFile file(autostartPath + "/" + appName + ".desktop");
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&file);
out << "[Desktop Entry]" << "\n";
out << "Type=Application" << "\n";
out << "Exec=" << appPath << "\n";
out << "Hidden=false" << "\n";
out << "NoDisplay=false" << "\n";
out << "X-GNOME-Autostart-enabled=true" << "\n";
out << "Name=" << appName << "\n";
file.close();
} else {
qDebug() << "Failed to create .desktop file for auto start.";
}
#else // if defined(Q_OS_WIN)
qDebug() << "AutoRunManager::SetAutoRun is not implemented for this OS.";
#endif // if defined(Q_OS_WIN)
}
static void RemoveAutoRun(const QString& appName)
{
#if defined(Q_OS_WIN)
QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run",
QSettings::NativeFormat);
settings.remove(appName);
#elif defined(Q_OS_LINUX)
QString autostartPath = QDir::homePath() + "/.config/autostart";
QFile file(autostartPath + "/" + appName + ".desktop");
if (file.exists()) {
if (file.remove()) {
qDebug() << ".desktop file removed successfully.";
} else {
qDebug() << "Failed to remove .desktop file.";
}
}
#else // if defined(Q_OS_WIN)
qDebug() << "AutoRunManager::RemoveAutoRun is not implemented for this OS.";
#endif // if defined(Q_OS_WIN)
}
};
#endif // AUTORUNMANAGER_H