Security-X

Forum Security-X => Programmation => Cours => Discussion démarrée par: igor51 le octobre 14, 2012, 19:03:02

Titre: Opération sur le registre
Posté par: igor51 le octobre 14, 2012, 19:03:02
Le code sera commenté en substance :



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

Titre: Re : Opération sur le registre
Posté par: igor51 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);