Qt 获取当前计算机已安装的软件(注册表方式)

前言

最近在写一些关于获取本机信息的函数,大多数获取方式都可以通过调用windows开发的API得到,当前Qt也有封装一写API可以直接获取到计算机的信息,如获取主机名只用:QHostInfo::localHostName()可以获取到。除了这两种方式还有一种就是用注册表方式获取,但是这种方式有个弊端就是,有些软件并不会写入注册表,所以注册表就获取不到,今天我们的获取计算机软件信息就是这样滴。

正文开始

软件基本信息获取最主要用到的注册表是:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\

软件卸载信息中包含: DisplayName(显示名称)/DisplayIcon(显示标题)/UninstallString(卸载路径),今天文章主要用到的就是: DisplayName(显示名称)。

关键代码

QString GetDevInfos::getSoftware()
{
		QString regStr = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"
		QSettings settings(regStr, QSettings::NativeFormat);
		QStringList regGroups = settings.childGroups();
		foreach (QString regItem , regGroups)
		{
		settings.beginGroup(regItem);
		QString displayName = settings.value("DisplayName").toString();
		QString uninstallString = settings.value("UninstallString").toString();
		if(!displayName.isEmpty())
		{
		qDebug() << "[" << __FUNCTION__ <<__LINE__ << "] :" << displayName <f< uninstallString;
		}
		settings.endGroup();
		}
		return "";
}

代码执行结果

[ GetDevInfos::getSoftware 105 ] : "护眼宝 3.1" "C:\\Program Files (x86)\\护眼宝\\uninst.exe"
[ GetDevInfos::getSoftware 105 ] : "网易有道词典" "D:\\Youdao\\Dict\\uninst.exe"

原文地址:https://itzhai.cn/xuexijiaocheng/1199.html

posted @ 2020-11-12 21:56  不随。  阅读(146)  评论(0编辑  收藏  举报  来源