Bonjour,
Après bien des déboires, j'ai une fonction qui me renvoie une valeur de la base de registre dans un std::string.
Mais bizarement, le résultat est une chaine avec un espace inséré entre chaque caractère. Ca ressemble à un problème d'encoding, mais je ne vois vraiment pas où ça foire. Voici la fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 string getRegistryValue(LPCTSTR path) { string result = ""; HKEY key; unsigned char tempStr[512]; unsigned long taille = sizeof(tempStr); unsigned long type; long res = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\MyCompany\\MyProduct\\"), 0, KEY_READ, &key); if (res != ERROR_SUCCESS) { cout << "Erreur " << endl; return ""; } if (RegQueryValueEx(key, path, 0, &type, (BYTE*)&tempStr[0], &taille) != ERROR_SUCCESS) { cout << "Erreur " << endl; RegCloseKey(key); return ""; } tempStr[taille] = 0; result.assign(tempStr, tempStr + taille); RegCloseKey(key); return result; }
Et je l'appelle comme ceci:
Si la valeur dans la base de type REG_SZ, est "abc123", ça retourne "a b c 1 2 3 ".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 string val = getRegistryValue(_T("myValue")); cout << "value = " << val;
Partager