2015-08-10 7 views
2

J'ai lu le registre avec QSettings. La clé que je veux lire ceci:QSettings remplace les barres obliques par des barres obliques inverses (registre)

HKEY_LOCAL_MACHINE \ SYSTEM \ Setup \ Source OS (Mis à jour le 8/1/2015 02:45:41)

Depuis le nom de clé Source OS (Updated on 8/1/2015 02:45:41) est dynamique, je viens d'ouvrir

QSettings settings("HKEY_LOCAL_MACHINE\\SYSTEM\\Setup", QSettings::NativeFormat); 

et exécuter récursive à travers les settings.childGroups() et construire ma clé avec ceci:

QString key = settings.fileName() + "\\" + settings.group(); 

Mais il en résulte:

\ HKEY_LOCAL_MACHINE \ SYSTEM \ Setup \ Source OS (Mis à jour le 8 \ 1 \ 2015 02:45:41)

Comme vous pouvez voir les barres obliques sont maintenant des backslashes et je ne peux pas distinguer entre les morceaux de nom et de chemin.

Une idée de pourquoi QSettings convertit les barres obliques en barres obliques inverses?

Répondre

1

Des QSettings documentation:

Ne pas utiliser des barres obliques ('/' et '\') dans la section ou les noms clés; la barre oblique inverse est utilisée pour séparer les sous-clés (voir ci-dessous). Sur les fenêtres '\' sont convertis par QSettings en '/', ce qui les rend identiques.

Généralement, l'idée de noms de clés de registre dynamiques n'est pas très bonne. Je pense que la meilleure approche consiste à créer deux valeurs distinctes à l'intérieur de votre clé - Source OS et Updated On.

+0

je sais ... mais la clé est générée par la mise à jour de Windows 10 - je n'ai aucune influence – wutzebaer

+0

@wutzebaer Ensuite, malheureusement, vous devrez accéder au registre via ** WinAPI **, je suppose. – kefir500