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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ".