RegOpenKeyEx échoue sur HKEY_LOCAL_MACHINE

Bonjour, j’essaie de lire une valeur de registre qui me donne le chemin d’access à firefox.exe. Ceci est stocké sous

HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox 3.0.10\bin 

(le numéro de version peut être trouvé ailleurs)

Mais je n’arrive pas à obtenir que RegOpenKeyEx renvoie ERROR_SUCCESS pour quoi que ce soit en dessous de

 HKEY_LOCAL_MACHINE 

donc ce test échoue:

 if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("\\SOFTWARE"),0,KEY_QUERY_VALUE,&keyHandle) == ERROR_SUCCESS) 

pendant que ce test réussit:

 if(RegOpenKeyEx(HKEY_CLASSES_ROOT,TEXT("\\Shell"),0,KEY_QUERY_VALUE,&keyHandle) == ERROR_SUCCESS) 

Le code suivant a échoué sur ma machine avec le code d’erreur 161, ce qui signifie “chemin incorrect” (recherchez-le dans winerror.h):

 long n = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE"), 0,KEY_QUERY_VALUE, &hk ); 

J’ai ensuite changé l’appel de RegOpenKeyEx pour qu’il utilise “SOFTWARE” (notez pas de barres obliques) et cela a fonctionné:

 #include  #include  using namespace std; int main() { HKEY hk; // Notice that it's SOFTWARE instead of \\SOFTWARE: long n = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE"), 0,KEY_QUERY_VALUE, &hk ); if ( n == ERROR_SUCCESS ) { cout << "OK" << endl; } else { cout << "Failed with value " << n << endl; } }