【开启自启动】软件设置开机自启动的相关问题

文章讲述了如何在Windows系统中设置应用程序的开机自启动,指出代码只适用于64位系统,并提到重启后软件存在文件打开异常的情况。
摘要由CSDN通过智能技术生成









1、这个是设置开启自动启动的代码

//这个是设置开启自动启动的代码
#define REG_RUN_MANAGE "HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run"
//#define REG_RUN_MANAGE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
//#define REG_RUN_MANAGE "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
//#define REG_RUN_MANAGE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"

//开机自启动功能的开关
	QString application_name = QApplication::applicationName();
    //QSettings *settings = new QSettings(REG_RUN_MANAGE, QSettings::NativeFormat);
    QSettings *settings = new QSettings(REG_RUN_MANAGE, QSettings::Registry32Format);
	if (option.AutoStart)
	{
		
        //QString application_path = QApplication::applicationFilePath();
        //settings->setValue(application_name, application_path.replace("/", "\\"));
		QString application_path = QDir::toNativeSeparators(QCoreApplication::applicationFilePath());
		application_path.append("\"");
		application_path.prepend("\"");
		//这个是在application_path这个路径设置application_name的软件名
        settings->setValue(application_name, application_path);

        wstring appName = application_name.toStdWString();
        wstring appPath = application_path.toStdWString();
        bool ret = set_startup_registry(appPath, appName);
        qDebug() << "[Option]:configuration create ret : " << ret;
	}
	else
	{
        settings->remove(application_name);
//        QString application_path = QDir::toNativeSeparators(QCoreApplication::applicationFilePath());
//        application_path.append("\"");
//        application_path.prepend("\"");
//        //settings->setValue(application_name, application_path);

//        wstring appName = application_name.toStdWString();
//        wstring appPath = application_path.toStdWString();
//        bool ret = remove_startup_registry(appName, appPath);
//        qDebug() << "[Option]:configuration remove ret : " << ret;
	}
	delete settings;

2、开启自启动的问题
(1)、如上的代码好像是只能在64位的windows上才可以生效,32位的没有生效。
(2)、重启后的软件,还是有一些问题的,就是打开文件异常。代码如下:

QFile file("file.txt");
file.open(QIODevice::WriteOnly);
file.write("123");
file.close();
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值