【问题标题】:Get uninstall application path by name issue按名称问题获取卸载应用程序路径
【发布时间】:2017-07-23 21:16:50
【问题描述】:

我想通过应用程序名称从注册表中获取应用程序卸载路径。

代码:

QString Test::getAppUninstallPath(QString name)
{
    QString uninstallLocation;
    QStringList allCurrentUserKeys;
    QSettings registryKeyCurrentUser("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall", QSettings::NativeFormat);
    allCurrentUserKeys = registryKeyCurrentUser.allKeys();

    for (QString key : allCurrentUserKeys) {
        if (key.contains("DisplayName")) {
            if (registryKeyCurrentUser.value(key).toString() == name) {
                uninstallLocation = registryKeyCurrentUser.value("UninstallString").toString();
            }
        }
    }

    return uninstallLocation;
}

它什么也不返回。如何获取应用的卸载路径?谢谢。

【问题讨论】:

    标签: c++ windows registry


    【解决方案1】:

    感谢 hskoglund。因为我正在处理层次结构/嵌套键,所以我应该使用beginGroup()/endGroup()

    代码:

        QString uninstallLocation;
        QSettings registryKeyLM("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall", QSettings::NativeFormat);
    
        auto allGroups = registryKeyLM.childGroups();
        for (auto group : allGroups)
        {
            registryKeyLM.beginGroup(group);
    
            for (auto key : registryKeyLM.childKeys())
                if ("DisplayName" == key)
                    if (registryKeyLM.value(key) == name)
                        uninstallLocation = registryKeyLM.value("UninstallString").toString();
    
            registryKeyLM.endGroup();
        }
    
        return uninstallLocation;
    

    【讨论】:

      猜你喜欢
      • 2013-09-24
      • 1970-01-01
      • 2012-02-17
      • 2012-03-02
      • 2016-12-18
      • 2015-10-19
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多