使用Qt实现开机自启动程序

简介: 使用Qt实现开机自启动程序

Hello,终于跟大家见面了,今天跟大家分享一个程序自启动的例子。

设置程序自启动有很多方法,其中一种便是设置注册表,当然可以手动为程序设置,但是如果是不懂电脑的客户,设置起来就会很不方便。所以今天小豆君就跟大家分享下如何使用Qt来实现程序自启动。

本次的例子是Win10系统,其它的系统都比较类似。

1 自启动程序的注册表设置方法

设置自启动的注册表路径为:

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run


然后在路径下增加一个键值对,如:

键(名称列)用来区别不同的注册表项,值(数据列)用来指定自启动程序的路径。

2 使用QSettings设置注册表项

QSettings有很多很强大的接口,其中一个就是可以对注册表项进行增删改查,所以我们就用它来操作注册表。

直接上代码:

#include <QDir>
#include <QSettings>
//设置程序自启动 appPath程序路径
void SetProcessAutoRunSelf(const QString &appPath)
{
    //注册表路径需要使用双反斜杠,如果是32位系统,要使用QSettings::Registry32Format
    QSettings settings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
                       QSettings::Registry64Format);
    //以程序名称作为注册表中的键
    //根据键获取对应的值(程序路径)
    QFileInfo fInfo(appPath);
    QString name = fInfo.baseName();
    QString path = settings.value(name).toString();
    //如果注册表中的路径和当前程序路径不一样,
    //则表示没有设置自启动或自启动程序已经更换了路径
    //toNativeSeparators的意思是将"/"替换为"\"
    QString newPath = QDir::toNativeSeparators(appPath);
    if (path != newPath)
    {
        settings.setValue(name, newPath);
    }
}


其次,再在main函数中调用:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    SetProcessAutoRunSelf(qApp->applicationFilePath());
    QWidget w;
    w.show();
    return a.exec();
}


然后,使用windeployqt命令发布程序,打开exe,并且注册表中已经新增了启动项。


最后,重新启动程序,程序自启动成功,自此大功告成。

好了,这次的分享就到这里,我们下次再见,最后不要忘记点赞和分享哦。

欢迎关注微信公众号-小豆君Qt分享

如果您觉得不错,请帮忙点赞转发,您的每一次支持,都是对原创,开源最大的鼓励!

相关文章
|
7月前
|
Web App开发 存储 Linux
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
486 0
|
7月前
【QT】读写.ini配置文件的程序实现
【QT】读写.ini配置文件的程序实现
122 0
|
5月前
|
Linux iOS开发 开发者
Qt问题(二):无法定位程序输入点于动态链接库
动态链接库(Dynamic Link Library,简称DLL)是一种可执行文件格式,常见于Windows操作系统中,而在Linux和macOS等其他操作系统中,相似的概念通常被称为共享库(Shared Library)。动态链接库允许程序在运行时加载所需的代码和数据,而不是在编译时静态链接到应用程序中。这种方式带来了几个重要的优点:
520 3
|
3月前
|
C语言 Android开发 C++
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
本文介绍了使用MTuner软件进行Qt MinGW编译程序的内存泄漏检测的方法,提供了MTuner的下载链接和测试代码示例,并通过将Debug程序拖入MTuner来定位内存泄漏问题。
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
|
7月前
|
开发框架 自然语言处理 Linux
Qt:构建强大跨平台应用程序的框架
Qt:构建强大跨平台应用程序的框架
|
5月前
|
调度
【浅入浅出】Qt多线程机制解析:提升程序响应性与并发处理能力
在学习QT线程的时候我们首先要知道的是QT的主线程,也叫GUI线程,意如其名,也就是我们程序的最主要的一个线程,主要负责初始化界面并监听事件循环,并根据事件处理做出界面上的反馈。但是当我们只限于在一个主线程上书写逻辑时碰到了需要一直等待的事件该怎么办?它的加载必定会带着主界面的卡顿,这时候我们就要去使用多线程。
178 6
|
7月前
|
C++
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
124 0
|
7月前
|
编译器
QT creator开发环境下 界面更改后运行程序不能实时更新或者在源文件添加该控件后无法编译的问题
在使用QT Creator开发界面的过程中,偶尔会出现添加控件后,运行程序后,界面控件无法更新的情况,或者在源文件使用该控件却出现无法编译的情况,使用QT Creator 4.8.2也会出现这个情况,也不知道这种情况会不会在以后有所改善。
335 0
|
6月前
Qt MainWindow 程序主窗口
Qt MainWindow 程序主窗口