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; } }