[Interest] QSettings possible bug on Windows
Tony Rietwyk
tony at rightsoft.com.au
Wed Oct 2 03:26:45 CEST 2013
Hi Alex,
It certainly looks like it should be found. It reminds of a security issue
where similar looking unicode characters in folder names were used to scam
people. Can you hex dump the characters of each entry in your loop? Maybe
you have a virus that has done something similar? Or maybe there is an
embedded NULL character?
Hope that helps,
Tony
Sent: Tuesday, 1 October 2013 12:02 PM
Just want to add that key is found,
qDebug() << "child keys = " << reg.childKeys();
result in
child keys = ("Common Administrative Tools", "Common AppData", "Common
Desktop", "Common Documents", "Common Programs", "Common Start Menu",
"Common Startup", "Common Templates", "CommonMusic", "CommonPictures",
"CommonVideo", "OEM Links", "Personal")
but value returned is empty string - different from visible in regedit
Alex
On Mon, Sep 30, 2013 at 6:24 PM, Alex Malyushytskyy <alexmalvtk at gmail.com>
wrote:
I found a problem with QSettings when trying to read from registry.
I am using Qt 4.7.3 so I would appreciate if anybody can check with Qt 5 at
least.
Problem:
QSettings fails to return specific key value (Common AppData) when read
other keys at the same level just fine.
Key exists and verified with regedit.
Test case is below:
#include <QApplication>
#include <QSettings>
#include <QDebug>
void ddd2();
int main(int argc, char *argv[])
{
// execute test and return
QApplication a(argc, argv);
ddd2();
return 0;
}
void ddd2()
{
QSettings
reg("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Explo
rer\\Shell Folders",
QSettings::NativeFormat);
QString key;
QString val;
key = QString("Common AppData");
val = QString ( reg.value(key).toString());
qDebug() << "key: " << key << " value: " << val;
key = QString("Common Desktop");
val = QString ( reg.value(key).toString());
qDebug() << "key: " << key << " value: " << val;
key = QString("Common Documents");
val = QString ( reg.value(key).toString());
qDebug() << "key: " << key << " value: " << val;
}
Output:
key: "Common AppData" value: ""
key: "Common Desktop" value: "C:\Users\Public\Desktop"
key: "Common Documents" value: "C:\Users\Public\Documents"
Expected
* WinXP: "c:\Documents and Settings\All Users\Application Data"
* WinV/7/8: "c:\ProgramData"
Regards,
Alex
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20131002/3391b521/attachment.html>
More information about the Interest
mailing list