Auteur Sujet: Opération sur le registre  (Lu 4103 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne igor51

  • Admin
  • Mega Power Members
  • *****
  • Messages: 10275
Opération sur le registre
« le: octobre 14, 2012, 19:03:02 »
Le code sera commenté en substance :

  • Ouverture de clé : RegOIpenKeyEx()
  • Enumération des éléments de la clé : RegEnumKey()
  • Fermeture de la clé ouverte : RegCloseKey


    ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",0,
                       KEY_QUERY_VALUE| 0x0100| KEY_ENUMERATE_SUB_KEYS, &handlekey);
    if(ret != ERROR_SUCCESS)
    {
        printf("%ld %ld\n", GetLastError(), ret);
        return;
    }

for(dw=0;RegEnumKey(handlekey,dw,version, sizeof(version))==ERROR_SUCCESS; dw++)
    {
   Faire des Opération();
    }
  RegCloseKey(handlekey);

« Modifié: octobre 14, 2012, 19:03:26 par igor51 »

Security-X

Opération sur le registre
« le: octobre 14, 2012, 19:03:02 »

Hors ligne igor51

  • Admin
  • Mega Power Members
  • *****
  • Messages: 10275
Re : Opération sur le registre
« Réponse #1 le: octobre 14, 2012, 19:05:50 »
Parcours récursif d'une clé pour trouver d'autres clés (par exemple pour récupérer la version de Firefox) :

strncpy(buf1,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall", sizeof("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"));

    ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",0,
                       KEY_QUERY_VALUE|  KEY_ENUMERATE_SUB_KEYS, &handlekey);
    if(ret != ERROR_SUCCESS)
    {
        printf("%ld %ld\n", GetLastError(), ret);
        return;
    }
    //if(log == NULL)return;

    for(dw=0;RegEnumKey(handlekey,dw,version, sizeof(version))==ERROR_SUCCESS; dw++)
    {
        ZeroMemory(buf2,sizeof(buf2));//
        ZeroMemory(buf3,sizeof(buf3));//
        strcat(buf2, buf1);
        strcat(buf2, "\\");
        strcat(buf2,version);

        ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,buf2,0,KEY_QUERY_VALUE, &handlekey1);
        if(ret == ERROR_SUCCESS)
        {
            dw1 = sizeof(buf);
            ret = RegQueryValueEx(handlekey1,"DisplayName",NULL,0,(PBYTE)buf, &dw1);
            if(ret == ERROR_SUCCESS)
            {
                if(strstr(buf,"Mozilla")!= NULL || strstr(buf,"Opera")!= NULL || \
                   strstr(buf,"Chrome")!= NULL )
                {
                    ret = RegQueryValueEx(handlekey1,"DisplayVersion",NULL,0,(PBYTE)buf3, &dw1);
                    if(log != NULL)
                        fprintf(log,"Nom : %s \r\n\tVersion : %s\r\n\r\n", buf, buf3);
                }
            RegCloseKey(handlekey1);
        }
    }

    RegCloseKey(handlekey);


« Modifié: octobre 25, 2012, 17:55:35 par igor51 »

Tags: