QSettings allow to access the 32-bit Registry from a 64-bit application.

  • I'm developing an application using the Qt framework. One of the features is to get all registry from HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall using QSettings.

    When I was testing, I found something curious: My code get the path "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", in other words, QSettings registry("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", QSettings::NativeForm), and print it to json file. Until then, it's ok. But when I open the regedit.exe and I go to the same path, the values are different. My application don't collect that informations.

    So I went researching and found something, windows do a redirection of this path to HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows, and that path (64bits path) apparently is inaccessible.

    I found "this commit":https://qt.gitorious.org/qt/sschuberths-clone/commit/d1b701bf69aa3ffd097442b4574a31520fc75567 where seems fix it, but it's not the same code of qt framework, and a "QTBUG":https://bugreports.qt-project.org/browse/QTBUG-3845?page=com.atlassian.jira.plugin.system.issuetabpanels:changehistory-tabpanel open since 2010, but still "Unresolved".

    Anyone knows how can I get around this problem still using QSettings? Some registry, like WinRAR, are not collected because it. I've tried use qsettings of this commit, but use QSettings::Registry64Format is the same of nothing. Don't get error, but do not collect.

    Thanks, sry about the bad english.

Log in to reply

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.