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 procd de faon que:
j'enregistre les cls (sous cls compris) dans un fichier.
j'en refais un, puis je compare, tout a dans un boucle.
sauf que j'ai un problme pour enregistrer toute la base de registre ;
j'enregistre comme cel:
HKLM_SOFTWARE (donc a prend tout + sous cls)
HKLM_SYSTEM
....
HKCU_CLSID
...
d'aprs msdn, on peut pas avec Classe root :s.
Donc j'en ai peu prs 40 rassembler.
bon aprs avoir sauvegarder chacun des sous cls d'une cls dans un fichier diffrent, 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:
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.