Important: Please read the Qt Code of Conduct -

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": where seems fix it, but it's not the same code of qt framework, and a "QTBUG": 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