Я в своей проге так делаю.
Для определения есть прога в автозапуске или нет:
bool autoRunStat;
#ifdef Q_WS_X11
autoRunStat = QFile::exists(QFileInfo(QDir::homePath()+"/.config/autostart/<иям проги>.desktop").absoluteFilePath());
#endif
#ifdef Q_WS_WIN
QSettings reg("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
autoRunStat = (reg.value("<имя проги>") == QString("\"%1\"").arg(QDir::toNativeSeparators(qApp->applicationFilePath())));
#endif
Для включения автозапуска
#ifdef Q_WS_WIN
QSettings reg("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
reg.setValue("<имя проги>", QString("\"%1\"").arg(QDir::toNativeSeparators(qApp->applicationFilePath())));
#endif
#ifdef Q_WS_X11
QFile autoRun(QFileInfo(QDir::homePath()+"/.config/autostart/<имя проги>.desktop").absoluteFilePath());
if (!autoRun.open(QIODevice::WriteOnly))
return;
autoRun.write("[Desktop Entry]\n");
autoRun.write("Type=Application\n");
autoRun.write(QString("Exec='%1'\n").arg(qApp->applicationFilePath()).toAscii());
autoRun.write("Hidden=falsen\n");
autoRun.write("NoDisplay=false\n");
autoRun.write("Name=<Имя>t\n");
autoRun.close();
#endif
Для выключения
#ifdef Q_WS_WIN
QSettings reg("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
reg.remove("<имя проги>");
#endif
#ifdef Q_WS_X11
if (!QFile::remove(QFileInfo(QDir::homePath()+"/.config/autostart/<имя проги>.desktop").absoluteFilePath()))
return;
#endif