Bonjour,

J'ai besoin dans un programme d'accéder à la base de registre, pour trouver certaines informations sur les clé USB connectées : Vid/Pid, et numéro de série.

J'ai pu voir que ces infos étaient disponibles sur des clé 0, 1, 2, ..... à l'endroit suivant :

SYSTEM/CurrentControlSet/Service/USBSTOR/Enum
J'ai écrit un petit programme pour récupérer la valeur de cette clé, mais comme je débute, j'ai une erreur et je ne comprend pas d'où elle vient.
J'utilise le code suivant :

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
 
char* LectureRegistre()
{
	HKEY hk;
	char *test;
	LPBYTE valeur=NULL;
	LPDWORD sizeValeur=NULL;
	LPCWSTR cle = _T("SYSTEM\\CurrentControlSet\\Service\\USBSTOR\\Enum");
 
	if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, cle, 0, KEY_READ, &hk))
	{
		if(RegQueryValueEx(hk,  _T("0"), 0, 0, valeur, sizeValeur))
		{
			sizeValeur=(LPDWORD)sizeof(valeur);
			if(RegQueryValueEx(hk,  _T("0"), 0, 0, valeur, sizeValeur))
			{
				test=(char*)*valeur;
			}
		}
	}
	RegCloseKey(hk);
	return test;
 
}
L'erreur se produit lors de l'exécution, au niveau de la ligne test=(char*)*valeur;

Exception non gérée à 0x0041392b dans CryptageCle.exe : 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x00000000.
Il semblerai donc que le pointeur valeur ne reçoivent pas l'adresse de cette clé.

Merci d'avance pour votre aide