qt - Læser registreringsværdi på vinduer med QSettings

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at læse MachineGuid -tasten fra Windows-registreringsdatabasen ved hjælp af QSettings .


Adressen til den nøgle er



  'HKEY\_LOCAL\_MACHINE \ SOFTWARE \ Microsoft \ Cryptography'.



Jeg bruger QSettings med QSettings :: Native flag som følger.


QSettings settings("HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\Cryptography",QSettings::NativeFormat);


Jeg kan se alle undermapper og deres nøgler og værdien af ​​ MachineGuid fra regedit.exe , men værdi -funktionen af ​​ QSettings ser ikke ud til at fungere korrekt.


resultaterne er som følger:


settings.value("MachineGuid").toString();


returnerer tom QString.


settings.childGroups();


returnerer alle undermapper i krypteringsmappen korrekt.


settings.childKeys();


returnerer en tom QStringList


settings.allKeys();


returnerer alle nøglerne inde i krypteringsmappen herunder nøglerne inde i alle undermapper undtagen MachineGuid, som er placeret inde i kryptografi.


Jeg bruger Qt 5.7.1 statisk ved hjælp af Visual Studio 2015 på Windows 10.


Jeg har forsøgt koder, der bruger Window.h header og jeg har hentet værdien, men problemet med denne tilgang er, at jeg skal tilføje mange DLL'er til min udgivne software.

Bedste reference


For at få adgang til 64 bit Windows OS med 32 bit kompileret kode, ville det rigtige format være 'Registry64Format' og hvis du får adgang til 32 bit OS fra 64 compiler, er det korrekte format 'Registry32Format'
Så i mit tilfælde, efter at have indstillet format til 64 bit, kunne nøglen hentes.


at læse nøgle 'MachineGuid' på 64 bit OS med 32 bit Kompileret kode;


QSettings settings("HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\Cryptography",
QSettings::Registry64Format);
auto key = settings.childKeys().at(0);