RegOpenKeyEx & RegQueryValueEx
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:
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:
Code:
1 2 3
|
string val = getRegistryValue(_T("myValue"));
cout << "value = " << val; |
Si la valeur dans la base de type REG_SZ, est "abc123", ça retourne "a b c 1 2 3 ".