Security-X
Forum Security-X => Programmation => Cours => Discussion démarrée par: igor51 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);
-
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);