自学内容网 自学内容网

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();
}


原文地址:https://blog.csdn.net/hellokandy/article/details/142564626

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!