Récupérer des valeurs chaines dans le registre...

Signaler
Messages postés
22
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
23 juillet 2004
-
Messages postés
76
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
17 janvier 2005
-
Bonjour à tous :p
Alors en faite, j'ai un tit problème
J'en ai souvent qd mm
Je voudrais en faite récupérer toute les chaines de caratères
présent dans une clé du registre.

La clé est "\\Software\\America Online\\AOL Instant Messenger (TM)\\CurrentVersion\\Users\"

Ca serait pour récuperer les pseudos AIM présent sur le pc en faite

Le problème c'est que l'on doit utiliser ReadString( AnsiString ) pour connaitre la valeur de la chaine...

Donc j'aimerai savoir si vous pourriez me venir en aide...
Merci bien ;)
Cordialement ;) Jojo
Dav6215 8-)

5 réponses

Messages postés
76
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
17 janvier 2005

Slt

Tu as 'RegOpenKeyEx' pour ouvrir une clé
et 'RegEnumValue' pour boucler sur toutes les valeurs.

Dsl mais je ne connais pas ' ReadString( AnsiString ) '

Bye

3psilon
Messages postés
69
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
19 octobre 2005
4
C'est le code que j'utilise pour recuperer la vitesse du processeur:
HKEY  hKey;
DWORD dwSize     = 0;
DWORD dwDataType = 0;
DWORD dwValue    = 0;
if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",0,KEY_QUERY_VALUE,&hKey) == ERROR_SUCCESS)
{
  dwSize = sizeof(dwValue);
  if(::RegQueryValueEx(hKey,"~MHz",0,&dwDataType,reinterpret_cast(&dwValue),&dwSize) != ERROR_SUCCESS)
  {
::RegCloseKey(hKey);
  }
  ::RegCloseKey(hKey);
}
int yourint;
yourint = (int)dwValue;
SetDlgItemInt(hwnd,IDC_PROCESSEUR, yourint,bSuccess);

C'est pour recuperer des DWORD c'est le plus difficile.
J'espere que ca t'aide.

.486
.model flat, stdcall
option casemap:none
Messages postés
22
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
23 juillet 2004

Bé en faite je travailler sous C++ Builder
Mais vu que vous me le proposez ainsi
Je vais tester et je vous dis quoi ;)

Merci bien @tout les 2
Dav6215 8-)
Messages postés
76
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
17 janvier 2005

Version Unicode pour recuperer la vitesse du cpu, c en gros pareil que ton code scolinks ;), mais mieux vaut avoir plusieurs possibilités que aucune :)
Ne pas ommettre <tchar.h>

// Recupere Nom et Vitesse du processeur
// Acces Base de Registre
DWORD result;
HKEY hKey;

result = ::RegOpenKeyEx (HKEY_LOCAL_MACHINE,"Hardware\\Description\\System\\CentralProcessor\\0", 0, KEY_QUERY_VALUE, &hKey);

// Check le retour de la fonction
if (result == ERROR_SUCCESS) {

unsigned long processor_speed;
char processor_name[128];
DWORD  dataSize;

dataSize = sizeof (processor_name);
result = ::RegQueryValueEx (hKey, "ProcessorNameString", NULL, NULL,(LPBYTE)&processor_name, &dataSize);
if (result == ERROR_SUCCESS)
    printf("Processor Name : %s",processor_name);

dataSize = sizeof (processor_speed);
result = ::RegQueryValueEx (hKey, _T("~MHz"), NULL, NULL,(LPBYTE)&processor_speed, &dataSize);
if (result == ERROR_SUCCESS)
    printf("Processor Speed : %d MHz",processor_speed);

}

RegCloseKey (hKey);
Messages postés
76
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
17 janvier 2005

Et puis pour etre complet :
Ce code permet de lister toutes les valeurs contenues dans une clé, en l'occurence cela concerne les elements qui sont au demmarage de win :

HKEY hKey = NULL;
DWORD lResult;
int i;

lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0, KEY_ENUMERATE_SUB_KEYS | KEY_QUERY_VALUE, &hKey);
        if (lResult == ERROR_SUCCESS)
        {
                char szNameBuffer[1024];
char szValueBuffer[1024];
                DWORD  dwNameSize;
DWORD dwValueSize;
i=0;
                do{
                
                        dwNameSize = sizeof (szNameBuffer);
                        dwValueSize = sizeof (szValueBuffer);

                        lResult = RegEnumValue(hKey, i, szNameBuffer, &dwNameSize, NULL, NULL,(LPBYTE) szValueBuffer, &dwValueSize);
                        if (lResult == ERROR_SUCCESS)
                        {
printf("Name : %s\nValue : %s",szNameBuffer,szValueBuffer);
}
i++;

                }while(lResult == ERROR_SUCCESS);

                RegCloseKey (hKey);

}


+++