[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