按名称问题获取卸载应用程序路径

Get uninstall application path by name issue

本文关键字:卸载 应用程序 路径 获取 问题      更新时间:2023-10-16

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

法典:

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

它不返回任何内容。如何获取应用程序的卸载路径?谢谢。

感谢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;