Classe permettant la copie récursive et la verification de l'existance de cles registres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 440 fois - Téléchargée 31 fois

Contenu du snippet

Cette classe comporte 2 fonctions :

- copyTreeKeys(source, destination) qui permet de copier tout le contenu (sous-clés, sous clés des sous-clés, etc. et les valeurs contenues
dans chacune de ces sous-clés vers la destination. On peut ainsi déplacer facilement les données d'une clé racine vers une autre.
Ex. : RegistryUtil.copyTreeKey(Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software").OpenSubKey("Ahead").OpenSubKey("Nero -
Burning Rom"), Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software").CreateSubKey("Backup
Registry").CreateSubKey("Ahead").CreateSubKey("Nero - Burning Rom"))
Cet exemple copie l'arborescence complète (sous-clés et valeurs) depuis la clé source vers la clé de destination.

- copyValues(source, destination) qui permet de copier uniquement toutes les valeurs d'une clé registre vers une autre clé registre.
Ex. : Idem que pour la fonction précédente mais cette fonction ne copie que les valeurs directement liées à la clé source et elle ne
copie pas les sous-clés.

- subKeyExist(cleRegistre, sousCleAVerifier) renvoie True si la sous-clé existe dans la clé registre spécifiée en premier argument de la
fonction sinon, renvoie False.
Ex. : RegistryUtil.subKeyExist(Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software"), "Ahead")
Cet exemple vérifie l'existance de la sous-clé "Ahead" dans la clé-registre HKEY_LOCAL_MACHINE\Software

Source / Exemple :


Public Class RegistryUtil
    'Copie récursive des clés et valeurs
    Public Shared Sub copyTreeKey(ByVal regSource As Microsoft.Win32.RegistryKey, ByVal regDest As Microsoft.Win32.RegistryKey)
        copyValues(regSource, regDest) 'Copie des valeurs de la clé en cours
        For Each sKey As String In regSource.GetSubKeyNames 'Création et parcours des sous-clés
            copyTreeKey(regSource.OpenSubKey(sKey), regDest.CreateSubKey(sKey))
        Next
        regSource.Close()
        regDest.Close()
    End Sub

    'Copie des valeurs d'une clé
    Public Shared Sub copyValues(ByVal regSource As Microsoft.Win32.RegistryKey, ByVal regDest As Microsoft.Win32.RegistryKey)
        For Each sKey As String In regSource.GetValueNames 'Parcours des valeurs
            regDest.SetValue(sKey, regSource.GetValue(sKey))
        Next
    End Sub

    'Vérifie l'existance d'une clé
    Public Shared Function subKeyExist(ByVal regSource As Microsoft.Win32.RegistryKey, ByVal sSubKey As String) As Boolean
        For Each sKey As String In regSource.GetSubKeyNames 'Parcours des sous-clés
            If sKey.ToUpper() = sSubKey.ToUpper() Then Return True
        Next
        Return False
    End Function
End Class

A voir également

Ajouter un commentaire

Commentaires

Messages postés
12
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
22 novembre 2007

merci pour ce code tres interesant :)
Messages postés
91
Date d'inscription
mercredi 27 février 2002
Statut
Membre
Dernière intervention
3 décembre 2011

Très interessant. Je pense adapter ta fonction pour une exploration de registre sur des postes distants en réseau local.
Ta récursivité fonctionne plutot bien (pas de bug constatés pour le moment)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.