Lesender Zugriff auf Windows Registry [gelöst]

Alles rund um die Programmierung mit Qt
Antworten
Doc_symbiosis
Beiträge: 32
Registriert: 19. Juni 2008 23:10

Lesender Zugriff auf Windows Registry [gelöst]

Beitrag von Doc_symbiosis »

Hallo,

ich habe ein Programm, welches folgendermaßen auf die Registry zugreift:

Code: Alles auswählen

        
QSettings gnuPGsettings("HKEY_CURRENT_USER\\Software\\GNU\\GNUPG", QSettings::NativeFormat);
gnuPGHome = gnuPGsettings.value("HomeDir").toString();
Klappt soweit auch super. Allerdings soll die Anwendung portabel sein und somit keine Schlüssel in der Registry anlegen. Problem ist, dass durch die erste dieser beiden Zeilen der Schlüssel angelegt wird, sofern er nicht existiert.

Weiss jemand, wie man rein lesenden Zugriff mit QSettings hinbekommt oder eine andere Qt-Methode, wie man einen Registry-Key ausliest? Ich habe schon echt lange gesucht, bin aber leider nicht fündig geworden...

Danke schonmal für etwaige antworten.
Zuletzt geändert von Doc_symbiosis am 15. Juli 2012 00:56, insgesamt 1-mal geändert.
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: Lesender Zugriff auf Windows Registry

Beitrag von brax »

Versuch mal mit QSettings::contains(const QString& key) vorher abzufragen, ob der Key existiert. Ist keine statische Methode, wirst Dir also wohl erstmal ein "leeres" QSettings Objekt bauen müssen und damit die Abfrage machen.
Doc_symbiosis
Beiträge: 32
Registriert: 19. Juni 2008 23:10

Re: Lesender Zugriff auf Windows Registry

Beitrag von Doc_symbiosis »

Hallo,

habe das Problem nun folgendermaßen gelöst:
Am Anfang der Klasse:

Code: Alles auswählen

#ifdef Q_OS_WIN
#include "windows.h"
#endif
In der eigentlichen Funktion dann folgendes verwendet

Code: Alles auswählen

    bool existsAndSuccess = false;

    HKEY hKey;

    existsAndSuccess = (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\GNU\\GNUPG", 0, KEY_READ, &hKey) == ERROR_SUCCESS);

    if (existsAndSuccess) {
        QSettings gnuPGsettings("HKEY_CURRENT_USER\\Software\\GNU\\GNUPG", QSettings::NativeFormat);
            if (gnuPGsettings.contains("HomeDir")) {
                gnuPGHome = gnuPGsettings.value("HomeDir").toString();
            } else {
                return NULL;
            }
        }
Antworten