[C] GESTION COMPLETE DE LA BASE DE REGISTRE

minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 - 23 déc. 2004 à 11:31
verdy_p Messages postés 202 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 29 janvier 2019 - 23 oct. 2007 à 13:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/28348-c-gestion-complete-de-la-base-de-registre

verdy_p Messages postés 202 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 29 janvier 2019
23 oct. 2007 à 13:09
RegSave et RegLoad ne sauvent pas la base de registre entière, car des entrées sont protégées par des options de sécurité (y compris dans HKEY_CURRENT_USER, où le système insère desclés sécurisés pour les données protégées comme les mots de passe cryptés, accessibles uniquement via l'API)
De plus il faut avoir les droits d'Administrateur de sauvegarde. Sinon seules les clés accessibles sont sauvegardées.

On n'a pas plus de droit avec l'énumération classique des clés et valeurs.

Il faut donc augmenter votre privilège pour acquérir les tokens SE_BACKUP et SE_RESTORE, et alors ça marche si on est admin et habilité...

Concernant HKEY_LOCAL_MACHINE, même l'administrateur local ne peut tout sauvegarder par défaut (tant que les options de sécurité ne sont pas présentes).

Attention aussi: certaines clés de HKEY_LOCAL_MACHINE ont un format très spécial (types de clés et de valeurs différents des types classiques. C'est le cas de SAM et SECURITY (dans lequel on trouve des liens vers SAM).

Enfin la basede registre contients des clés de redirection, montées dynamiquement: deux clés peuvent être identiques à des chemins différents. Si on veut parcourir l'arbre exhaustivement, on va obtenir une sauvegarde au moins deux fois trop grosse, et recharger des clés identiques sans forcément recréer les liens. Il faut gérer les liens et points de montage, ce qui n'est pas évident si on est connecté sur le système.

L'idéal est donc d'utiliser les points de restauration systèmes qui créent des backups corrects et pleinment utilisables: ils sont créés avec les bons privilèges et connaissent tous les formats de clés (tous les formats ne sont pas documentés, notamment pour SAM, SECURITY et les clés de configuration active PlugnPlay pour la gestion des ressources système).
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
26 déc. 2004 à 20:38
pour la classe en c++, je m'y mets des que j'ai fini mon projet (mi-janvier probablement!)
Ca devrait pas etre trop long à faire
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
23 déc. 2004 à 17:21
ta source est bien, bravo, maintenant tu pourrais porter ce code vers le C++ et faire une classe qui gere la base de registre, ca serait tres interessant egalement.
a++ ;)
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
23 déc. 2004 à 11:31
très bonne source, bravo. elle est assez bien commenté 7/10 parce que rien n'est parfait !