按名称问题获取卸载应用程序路径
Posted
技术标签:
【中文标题】按名称问题获取卸载应用程序路径【英文标题】: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;
它什么也不返回。如何获取应用的卸载路径?谢谢。
【问题讨论】:
【参考方案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;
【讨论】:
以上是关于按名称问题获取卸载应用程序路径的主要内容,如果未能解决你的问题,请参考以下文章