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

发布于:2024-10-10 ⋅ 阅读:(156) ⋅ 点赞:(0)

如何判断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();
}


网站公告

今日签到

点亮在社区的每一天
去签到