bonjour,

je suis dans la conception d'un logiciel qui enregistre les modifications de la base de registre, puis écrit le rapport dans un fichier.

J'ai procédé de façon à que:
j'enregistre les clés (sous clés compris) dans un fichier.
j'en refais un, puis je compare, tout ça dans un boucle.

sauf que j'ai un problème pour enregistrer toute la base de registre ;
j'enregistre comme celà:
HKLM_SOFTWARE (donc ça prend tout + sous clés)
HKLM_SYSTEM
....
HKCU_CLSID
...

d'après msdn, on peut pas avec Classe root :s.
Donc j'en ai à peu près 40 à rassembler.

bon après avoir sauvegarder chacun des sous clés d'une clés dans un fichier différent, je les rassemble en un seul, puis je refais un fichier et je compare.

sauf que la en comparant j'ai eu l'erreur avec regsavekey, l'error 183, voici mon code:

Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <winreg.h>
 
int saveKey(HKEY tree, const char *folder){
	long lRval;
	HKEY hKey;
 
		// Open location
	lRval = RegOpenKeyEx( tree, folder, 0, KEY_READ, &hKey );
	if (lRval != ERROR_SUCCESS)
	{
		printf("open failed: %ld",lRval);
		return 0;
	}
 
	lRval = RegSaveKey(hKey,"envBack",NULL);
	if (lRval != ERROR_SUCCESS)
	{
		printf("save failed: %ld", lRval);
		return 0;
	}
	else
		return 1;
 
}
 
int main()
{
	//BACKUP REGISTRY KEY: HKEY_LOCAL_MACHINE -> SOFTWARE
	if (saveKey(HKEY_LOCAL_MACHINE,"SOFTWARE"))
		printf("BACKUP OF REGISTRY KEY: HKEY_LOCAL_MACHINE -> SOFTWARE successful");
	else
		printf("BACKUP OF REGISTRY KEY: HKEY_LOCAL_MACHINE -> SOFTWARE failed");
 
 	return 0;
}

donc voilà si vous pouvez m'aidez, je bloque sur ce point.
J'ai chercher sur le net, j'ai trouver que l'erreur 183 de regsavekey veut dire "error already exist".


si vos voyez l'erreur merci.