当前位置: 首页 > news >正文

设置Qt程序开机自启动(windows版本)

前言

本文展示在windows环境下,通过代码实现更改系统注册表的方式来实现程序的开机自动启动。

一、注册表

需要更改的系统注册表为:
HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run

二、代码演示

1.头文件

头文件autorun.h

#ifndef AUTORUN_H
#define AUTORUN_H
void autoRun();
#endif // AUTORUN_H

2.实现文件

cpp文件autorun.cpp

代码如下(示例):

#include "autorun.h"#include <QDir>
#include <QSettings>
#include <QtWidgets>//设置程序自启动 appPath程序路径
#define AUTO_RUN "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
//#define AUTO_RUN "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
void setProcessAutoRunSelf(bool isstart)
{//注册表路径需要使用双反斜杠,如果是32位系统,要使用QSettings::Registry32Format;64位系统 QSettings::Registry64FormatQSettings *settings = new QSettings(AUTO_RUN, QSettings::NativeFormat);//以程序名称作为注册表中的键//根据键获取对应的值(程序路径)QString application_name = QApplication::applicationName();//获取应用名称QString path = settings->value(application_name).toString();//如果注册表中的路径和当前程序路径不一样,//则表示没有设置自启动或自启动程序已经更换了路径//toNativeSeparators的意思是将"/"替换为"\"if(isstart){QString appPath = QApplication::applicationFilePath();//找到应用的目录QString newPath = QDir::toNativeSeparators(appPath);if (path != newPath){settings->setValue(application_name, newPath);}}else settings->remove(application_name);
}void autoRun()
{setProcessAutoRunSelf(true);
}

3​​​​​​​.程序调用

#include "mainwindow.h"
#include "autorun.h"   //开机自动运行
#include <QApplication>
#include <QMessageBox>int main(int argc, char *argv[])
{Q_INIT_RESOURCE(qss);//样式表QApplication a(argc, argv);autoRun();//设置开机自动运行MainWindow w;w.show();return a.exec();
}

总结

提示:如上便实现了程序开机自启动,在程序第一次运行的时候,会被360之类的安全工具拦截,询问系统更改的权限,请给予绿灯通行.

若后续想取消程序的开机自启动,可以在注册表中删除对应的项目即可。

http://www.lryc.cn/news/505171.html

相关文章:

  • 【HarmonyOS】鸿蒙获取appIdentifier,Identifier
  • 【Rust自学】3.5. 控制流:if else
  • 美国信息学奥林匹克竞赛USACO 2024年12月比赛铜级问题1. 循环舍入-答案代码
  • Llama3模型详解 - Meta最新开源大模型全面解析
  • 2021-02-12 c++里面cin.sync()函数的意思
  • 下载红米Note 9 Pro5G对应的LineageOS代码下载及编译
  • 《探索 Caffe2 的 C++接口在移动设备上的性能优化之路》
  • 1.编写一个程序,给定一个大写字母,要求用小写输出
  • 条件随机场(CRF)详解:原理、算法与实现(深入浅出)
  • Android Studio、JDK、AGP、Gradle、kotlin-gradle-plugin 兼容性问题
  • 防抖(Debounce)和节流(Throttle)的区别和应用场景
  • 前端 Code Review 常见问题
  • Python监控AWS ECS集群和服务的CPU和内存利用率
  • 淘宝天猫API接口深度解析:如何高效利用商品详情与关键词搜索商品列表功能
  • python快速接入阿里云百炼大模型
  • 基于AI对话生成剧情AVG游戏
  • [flutter] 安卓编译配置
  • 使用ENSP实现NAT(2)
  • 解决小程序中ios可以正常滚动,而Android失效问题
  • docker安装部署
  • 百度23届秋招研发岗A卷
  • metrics.roc_curve函数介绍
  • stm32进硬件错误怎么回事
  • 【网络安全】掌握 Active Directory 攻防审计实操知识点
  • vscode不同项目使用不同插件
  • oracle存储过程中遇到的各种问题及解决方案集锦
  • PHP+MySQL 学生信息管理系统
  • 数据结构-栈与队列
  • c#上班,上学,交通方式接口
  • 吴恩达官宣开源,yyds!