• 今晚又失眠了,最近睡眠质量很差啊。

  • QsciScintilla 一个很好用的文本编辑器库

  • 愿逝者安息,愿生者奋发,愿祖国昌盛,致敬英雄

  • 身体是革命的本钱,猿(媛)仔们注意身体呀

  • 所谓”事务“就是指一组 SQL 命令,这些命令要么一起执行,要么都不被执行。

  • 遍历 for 循环时将,将外层写成函数,内层写成回调函数模式。

  • 网站被攻击了烦死了,今天一天都不能访问了

  • wordpress 官网抽风不能升级了!

  • Python 中 input 函数返回的始终是一个字符串。

  • 只有符合整数规范的字符串类数据,才能被 int()强制转换。因此:字符串’3.8’是不能被转换哟

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

Qt相关 2020-11-06 01:40:55 570次浏览 扫描二维码
文章目录[隐藏]

前言

最近在写一些关于获取本机信息的函数,大多数获取方式都可以通过调用 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"
喜欢 (3)