Qt自启动信息写入注册表

Qt自启动信息写入注册表

/*
*┌────────────────────────────────────────────────┐
*│ 描    述:Qt程序自启动设置	
*│ 作    者:windSnowLi
*│ 版    本:0.0.1
*│ 创建时间:2020/05/31
*└────────────────────────────────────────────────┘
*┌────────────────────────────────────────────────┐
*│ 命名空间:无
*│ 类    名:无
*│ 参    数:(int) 参数int 0为取消自启动,1为设置自启动,2为查询自启动,自启动返回true,不是自启动返回false
*└────────────────────────────────────────────────┘
*/
bool OperationAutoStart(int operation)
{
	//程序名称
	QString appName = QApplication::applicationName();
	// 程序路径
	QString application_path = QApplication::applicationFilePath();
	application_path.replace("/", "\\");
	application_path = "\"" + application_path + "\" auto";
	std::shared_ptr<QSettings> reg = std::make_shared<QSettings>(
		"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
		QSettings::NativeFormat);
	// 如果此键不存在,则返回的是空字符串
	QString val = reg->value(appName).toString();
	switch (operation) {
		//取消自启动
	case 0:
		//移除键
		reg->remove(appName);
		break;
		//设置自启动
	case 1:
		if (val != application_path) {
			//写入随意的字符串都能写入,但唯独自启动的程序路径写入自动成空,加入这个先添加空的值得解决了
			reg.setValue(appName, "\"\"");
			//设置键
			reg->setValue(appName, application_path);
		}
		break;
		//查询自启动
	case 2:
		if (val.compare(application_path) == 0) {
			reg->deleteLater();
			return true;
		}
		else {
			reg->deleteLater();
			return false;
		}
		break;
	default:
		reg->deleteLater();
		return false;
	}
	return false;
}

原文https://www.blog.hiyj.cn/article/detail/77

  • 15
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值