Exporter (0) Imprimer
Développer tout
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Accès au Registre avec Visual Basic .NET

Visual Studio .NET 2003

Cat Francis
L'équipe Visual Studio
Microsoft Corporation

Résumé : cet article explique comment accéder au Registre en utilisant les fonctions intégrées de Visual Basic® .NET, DeleteSetting, GetAllSettings, GetSetting et SaveSetting, et en utilisant les classes Registry et RegistryKey du CLR (Common Language Runtime). Il décrit en détail les autorisations nécessaires, explique quand utiliser l'Éditeur du Registre, et montre comment, par programmation, lire à partir du Registre et écrire dans celui-ci.

Cet article contient des liens vers des pages en anglais.

Sommaire

Introduction
Conditions requises
Accès au Registre avec les fonctions de Visual Basic .NET
Accès au Registre avec .NET Framework
Autorisations
Accès au Registre avec l'Éditeur du Registre
Conclusion

Introduction

Lorsque vous programmez dans Visual Basic .NET, vous pouvez choisir d'accéder au Registre par l'intermédiaire des fonctions de Visual Basic .NET ou des classes de Registre de .NET Framework. Si les fonctions de Visual Basic se révèlent suffisantes dans la plupart des cas, certaines situations peuvent nécessiter l'utilisation de .NET Framework.

Le Registre contient des informations concernant le système d'exploitation et les applications hébergées sur l'ordinateur. L'utilisation du Registre est susceptible de compromettre la sécurité du système. C'est la raison pour laquelle vous devez examiner très attentivement le code qui accède au Registre afin de vous assurer qu'il ne menace en rien la sécurité de l'ordinateur sur lequel il doit être exécuté.

Les entrées de Registre contiennent deux parties : le nom de la valeur et la valeur proprement dite. Les entrées sont stockées sous des clés et des sous-clés dans un système analogue au système de fichiers, dans lequel les fichiers sont stockés dans des répertoires et des sous-répertoires.

Conditions requises

Pour tirer le meilleur parti de cet article, les conditions suivantes doivent être remplies :

  • connaissance des versions précédentes de Visual Basic ;
  • connaissance de la conception et de l'objectif du Registre ;
  • compréhension des implications de sécurité liées à l'accès au Registre.

Accès au Registre avec les fonctions de Visual Basic .NET

Visual Basic .NET fournit quatre fonctions qui permettent d'accéder au Registre. Pour les utiliser, vous devez disposer des autorisations de lecture et d'écriture dans l'énumération RegistryPermissionAccess. Tout code exécuté avec la confiance totale (dans la stratégie de sécurité par défaut, il s'agit de n'importe quel code installé sur le disque dur de l'ordinateur de l'utilisateur) dispose des autorisations nécessaires pour accéder au Registre. Pour plus d'informations, reportez-vous à RegistryPermission Class. Lien non MSDN France Site en anglais

Fonction de Visual Basic .NET Description
DeleteSetting Lien non MSDN France Site en anglais Supprime un paramètre de section ou de clé d'une entrée de l'application dans le Registre.
GetSetting Lien non MSDN France Site en anglais Renvoie une valeur de paramètre de clé à partir d'une entrée de l'application dans le Registre.
GetAllSettings Lien non MSDN France Site en anglais Renvoie une liste des paramètres de clé et de leurs valeurs à partir d'une entrée de l'application dans le Registre.
SaveSetting Lien non MSDN France Site en anglais Crée ou enregistre une entrée de l'application dans le Registre.
Remarque   Les noms de section ne peuvent pas être renvoyés par la fonction GetSetting.

Si le paramètre de clé ne peut pas être enregistré, un objet ArgumentException est levé. Pour plus d'informations sur cette exception, reportez-vous à ArgumentException Lien non MSDN France Site en anglais.

L'exemple qui suit crée une clé de Registre et deux sous-clés. Il imprime la valeur de la première clé, puis les valeurs de la première clé et de ses sous-clés. Il supprime ensuite la seconde sous-clé et imprime les valeurs de la première clé et de ses sous-clés pour confirmer la suppression de la seconde sous-clé.

' Crée la première clé.
SaveSetting("TestApp","Startup","FirstKey","First")
' Crée la première sous-clé.
SaveSetting("TestApp","FirstKey","FirstSubKey","FirstSub")
' Crée la seconde sous-clé.
SaveSetting("TestApp","FirstKey","SecondSubKey","SecondSub")
Try
 ' Écrit la valeur de la première clé.
 Console.WriteLine ((GetSetting("TestApp","Startup","FirstKey"))
 ' Écrit la première clé et ses deux sous-clés.
 Console.WriteLine (GetAllSettings("TestApp","Startup"))
 Catch e As ArgumentException
 Catch e As Exception
 Console.WriteLine (e.GetType.ToString)
 Finally
End Try
DeleteSetting("TestApp","FirstKey","SecondSubKey")

Try
 Console.WriteLine (GetSetting("TestApp","Startup","FirstKey"))
 Console.WriteLine (GetAllSettings("TestApp","Startup"))
 Catch e As ArgumentException
 Catch e As Exception
 Console.WriteLine (e.GetType.ToString)
 Finally
End Try

Il existe une limitation à l'utilisation des fonctions intégrées d'accès au Registre : vous ne pouvez accéder qu'aux clés de Registre sous HKEY_CURRENT_USER\Software\VB et VBA Paramètres de programme. Pour ce faire, vous devez ouvrir une session pour que la clé de Registre HKEY_CURRENT_USER soit active.

Les paramètres du Registre accessibles à partir d'un processus non interactif (tel que mtx.exe) doivent être stockés sous les clés de Registre HKEY_LOCAL_MACHINE\Software\ ou HKEY_USER\DEFAULT\Software.

Accès au Registre avec .NET Framework

Comme vous ne pouvez utiliser les fonctions GetSetting et SaveSetting pour accéder aux clés que sous HKEY_CURRENT_USER\Software\VB et VBA Paramètres de programme, vous pouvez les trouver contraignantes. Le cas échéant, vous pouvez utiliser les classes Registry et RegistryKey dans l'espace de noms Microsoft.Win32 de .NET Framework. Pour plus d'informations, reportez-vous à Registry Lien non MSDN France Site en anglais et http://msdn.microsoft.com/library/en-us/cpref/html/frlrfMicrosoftWin32RegistryKeyClassTopic.asp RegistryKey Lien non MSDN France Site en anglais

La classe Registry fournit les clés de Registre de base qui peuvent être utilisées pour accéder aux sous-clés et à leurs valeurs. Les clés de base proprement dites sont en lecture seule. Le tableau suivant répertorie et décrit les sept clés de la classe Registry :

Clé Description
ClassesRoot Définit les types de documents et les propriétés qui leur sont associées.
CurrentConfig Contient des informations sur la configuration matérielle qui sont indépendantes de l'utilisateur.
CurrentUser Contient des informations sur les préférences de l'utilisateur, telles que les variables d'environnement.
DynData Contient les données de Registre dynamiques, telles que celles utilisées par les pilotes de périphériques virtuels.
LocalMachine Contient cinq sous-clés (Matériel, SAM, Sécurité, Logiciels et Système) répertoriant les données de configuration de l'ordinateur local.
PerformanceData Contient des informations sur les performances des composants logiciels.
Users Contient des informations sur les préférences par défaut de l'utilisateur.

L'exemple suivant montre comment lire une valeur DWORD à partir de HKEY_CURRENT_USER :

Imports Microsoft.Win32
Dim regVersion As RegistryKey
Dim keyValue As String
keyValue = Software\\Microsoft\\TestApp\\1.0
regVersion = Registry.CurrentUser.OpenSubKey(keyValue, False)
Dim intVersion As Integer = 0
If (Not regVersion Is Nothing) Then
 intVersion = regVersion.GetValue("Version", 0)
 regVersion.Close()
End If

L'exemple suivant lit, incrémente, puis écrit une valeur DWORD vers HKEY_CURRENT_USER :

Imports Microsoft.Win32
Dim regVersion As RegistryKey
regVersion = 
Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\TestApp\\1.0", True)
If regVersion Is Nothing Then
 ' La clé n'existe pas ; crée la clé.
 regVersion = 
Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\TestApp\\1.0")
End If

Dim intVersion As Integer = 0
If (Not regVersion Is Nothing) Then
 intVersion = regVersion.GetValue("Version", 0)
 intVersion = intVersion + 1
 regVersion.SetValue("Version", intVersion)
 regVersion.Close()
End If

Autorisations

La classe RegistryPermission, qui se trouve dans l'espace de noms System.Security.Permission, contrôle la capacité à accéder aux variables du Registre. Les variables du Registre ne doivent pas être stockées dans les emplacements de la mémoire auxquels le code sans RegistryPermission peut accéder. De même, lorsque vous accordez des autorisations, accordez le privilège le moins élevé permettant d'effectuer une tâche donnée. Pour plus d'informations, reportez-vous à RegistryPermission Lien non MSDN France Site en anglais et http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemSecurityPermissions.asp System.Security.Permissions Lien non MSDN France Site en anglais.

Les valeurs d'autorisation d'accès au Registre sont définies par l'énumération RegistryPermissionAccess. Pour plus d'informations, reportez-vous à RegistryPermissionAccess Lien non MSDN France Site en anglais. Le tableau suivant présente ses membres en détail :

Valeur Description
AllAccess Accès en création, lecture et écriture aux variables du Registre.
Create Accès en création aux variables du Registre.
NoAccess Pas d'accès aux variables du Registre.
Read Accès en lecture aux variables du Registre.
Write Accès en écriture aux variables du Registre.
Remarque   Si vous souhaitez combiner des autorisations, par exemple en lecture et en écriture, tout en refusant l'accès en création, vous pouvez le faire avec une opération Or au niveau du bit, comme dans l'exemple qui suit.
RegistryPermissionAccess.Write Or RegistryPermissionAccess.Read _
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TestApp"

Accès au Registre avec l'Éditeur du Registre

Si vous travaillez sur des projets de déploiement, vous avez également la possibilité d'utiliser l'Éditeur du Registre pour spécifier les clés de Registre et les valeurs à ajouter au Registre de l'ordinateur cible. Pour plus d'informations, reportez-vous à Registry Editor Lien non MSDN France Site en anglais.

Pour accéder à l'Éditeur du Registre
  1. Ouvrez un projet de déploiement.
  2. Dans le menu Vue, pointez sur Éditeur, puis cliquez sur Registre.

    Pour plus d'informations sur l'utilisation de l'Éditeur du Registre dans des projets de déploiement, reportez-vous à Registry Settings Management in Deployment Lien non MSDN France Site en anglais.

Conclusion

Le Registre constitue l'emplacement idéal pour enregistrer les informations concernant votre application et les paramètres d'utilisateurs individuels. Vous pouvez également y consulter des informations sur le matériel ou les applications que vous utilisez.

Pour la plupart des projets, l'accès au Registre par l'intermédiaire des fonctions runtime de Visual Basic est suffisant. Cependant, il se peut que vous ayez parfois besoin d'utiliser les classes Registry et RegistryKey de .NET Framework. Dans les deux cas, cette tâche est relativement simple, mais du fait des implications de sécurité liées à ce type d'accès, vous devez veiller à ne pas créer de faille de sécurité, en incluant par exemple dans une clé un mot de passe en texte clair ou d'autres informations sensibles.



Dernière mise à jour le lundi 15 juillet 2002



Pour en savoir plus
Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft. Tous droits réservés.