Lecture dans la base de registre
Bonjour tout le monde!
J'essaie de récupérer plusieurs valeurs dans la base de registre avec la fonction RegQueryValueEx.
Voici la fonction:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
BOOL RegValue(HKEY hKeyRoot, LPCTSTR lpSubKey,DWORD Size)
{
LONG Error;
Error=RegQueryValueEx(hKeyRoot,lpSubKey,0,0,(LPBYTE)gPath,&Size);
if(Error==ERROR_SUCCESS)
{
return(TRUE);
}
else
{
return(FALSE);
}
} |
Je l'appelle ainsi:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
LONG Error;
char gPath[512];
Error = RegOpenKeyEx (HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Services\\Disk\\Enum"), 0, KEY_QUERY_VALUE, &hKeyDisks);
if (Error == ERROR_SUCCESS)
{
...
sprintf_s (gDiskName, 32, "%u", DiskNumber);
Size = sizeof (gPath);
Error=RegValue(hKeyDisks,gDiskName,Size);
...
} |
avec DiskNumber qui est un entier qui va de 0 à n.
Le problème est que la valeur retournée par RegQueryValueEx(hKeyRoot,lpSubKey,0,0,(LPBYTE)gPath,&Size); dans la fonction RegValue est "ERROR_FILE_NOT_FOUND" alors que si je mets TEXT("0") à la place de "lpSubKey", la fonction lit bien la valeur de la clé "0".
Comment faire pour que cet argument soit une variable?
Merci d'avance