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

Dav6215 Messages postés 22 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 23 juillet 2004 - 23 juil. 2004 à 15:40
3psilon Messages postés 76 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 17 janvier 2005 - 23 juil. 2004 à 23:27
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

3psilon Messages postés 76 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 17 janvier 2005
23 juil. 2004 à 19:00
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
0
scolinks Messages postés 69 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 19 octobre 2005 6
23 juil. 2004 à 22:22
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
0
Dav6215 Messages postés 22 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 23 juillet 2004
23 juil. 2004 à 22:28
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-)
0
3psilon Messages postés 76 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 17 janvier 2005
23 juil. 2004 à 23:17
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);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
3psilon Messages postés 76 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 17 janvier 2005
23 juil. 2004 à 23:27
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);

}


+++
0
Rejoignez-nous