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

QT 如何判断电脑已安装某个软件

如何判断Windows电脑是否已经安装了某个软件?一般而言,通过安装包形式安装的软件,都会把卸载信息写入到注册表,本文正是通过读取注册表的方式来判断是否已安装了该款软件,详见下面代码:

#include <QCoreApplication>
#include <QSettings>
#include <QDebug>bool is64bitOperatingSystem()
{return sizeof(void *) == 8;
}//如果返回不为空则表示已安装
QString HasInstall(const QString &softName)
{QString header = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\";bool is64bit = is64bitOperatingSystem();if(is64bit){header = "HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\";}QSettings settings(header, QSettings::NativeFormat);QStringList regGroups = settings.childGroups();foreach (QString regItem, regGroups){settings.beginGroup(regItem);QString displayName = settings.value("DisplayName").toString();QString installPath = settings.value("InstallLocation").toString();QString uninstallString = settings.value("UninstallString").toString();if(displayName.contains(softName)){QString filePath = installPath.replace("\\", "/");return filePath;}settings.endGroup();}return "";
}int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);//QString path = HasInstall("Chemiluminescence");qDebug() << "path" << path;//return a.exec();
}

相关文章:

  • 知识点复习4
  • 漫步者头戴式耳机好用吗?漫步者、西圣、万魔顶级机型测评对比
  • (23)mysql中mysqldump备份数据库
  • java SE -- 线程 asset
  • 基于yolov8的游戏人物自动锁定功能
  • 排序--堆排序【图文详解】
  • Vert.x 和 Spring Boot 是两种流行的 Java 框架的比较
  • Java AI 编程助手
  • 探索图像生成大模型Imagen:原理、比较与应用
  • Nginx的核心架构和设计原理
  • 大语言模型技术点总结
  • 二、词法分析,《编译原理》(本科教学版),第2版
  • 【C#】内存的使用和释放
  • AWS 管理控制台
  • 打造高质量软件架构 - 9大质量属性
  • Docker容器管理
  • Invalidate和postInvalidate的区别
  • Python_OOP
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 分享一份非常强势的Android面试题
  • 关于extract.autodesk.io的一些说明
  • 蓝海存储开关机注意事项总结
  • 区块链技术特点之去中心化特性
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #include到底该写在哪
  • #NOIP 2014#Day.2 T3 解方程
  • #pragma multi_compile #pragma shader_feature
  • #QT项目实战(天气预报)
  • #微信小程序:微信小程序常见的配置传旨
  • (39)STM32——FLASH闪存
  • (Charles)如何抓取手机http的报文
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (面试必看!)锁策略
  • (七)Java对象在Hibernate持久化层的状态
  • (推荐)叮当——中文语音对话机器人
  • (万字长文)Spring的核心知识尽揽其中
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)h264中avc和flv数据的解析
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .equals()到底是什么意思?
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net core 控制台应用程序读取配置文件app.config
  • .NET 分布式技术比较
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • .ui文件相关
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • [《百万宝贝》观后]To be or not to be?
  • [000-01-022].第06节:RabbitMQ中的交换机介绍
  • [ACTF2020 新生赛]Include
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务