Assembly : mscorlib (dans mscorlib.dll)
Syntaxe<ComVisibleAttribute(True)> _ Public NotInheritable Class Registry
Il est possible d'accéder aux membres d'une classe statique directement sans une instance de la classe.
[ComVisibleAttribute(true)] public static class Registry
[ComVisibleAttribute(true)] public ref class Registry abstract sealed
/** @attribute ComVisibleAttribute(true) */ public final class Registry
ComVisibleAttribute(true) public final class Registry
NotesCette classe fournit l'ensemble des clés racine standard présentes dans le Registre des ordinateurs qui exécutent Windows. Le Registre est un support de stockage des informations relatives aux applications, aux utilisateurs et aux paramètres système par défaut. Les applications peuvent par exemple utiliser le Registre pour stocker des informations qui doivent être préservées après la fermeture de l'application et pour accéder à ces mêmes informations lors du rechargement de l'application. Vous pouvez ainsi stocker les paramètres de couleur, les emplacements d'affichage ou la taille de la fenêtre. Vous pouvez contrôler ces données pour chaque utilisateur en stockant les informations à un emplacement différent dans le Registre.
Les instances RegistryKey de base (ou racines) qui sont exposées par la classe Registry définissent le mécanisme de stockage de base pour les sous-clés et les valeurs du Registre. Toutes les clés sont en lecture seule car le Registre dépend de leur existence. Les clés exposées par Registry sont les suivantes :
CurrentUserStocke les informations relatives aux préférences de l'utilisateur.
LocalMachineStocke les informations de configuration pour l'ordinateur local.
ClassesRootStocke les informations relatives aux types (et classes) et à leurs propriétés.
UsersStocke les informations relatives à la configuration utilisateur par défaut.
PerformanceDataStocke les informations relatives aux performances pour les composants logiciels.
CurrentConfigStocke les informations concernant le matériel qui ne sont pas spécifiques à l'utilisateur.
DynDataStocke les données dynamiques.
Dès que vous avez identifié la clé racine sous laquelle vous souhaitez stocker/récupérer des informations du Registre, vous pouvez utiliser la classe RegistryKey pour ajouter ou supprimer des sous-clés et manipuler les valeurs d'une clé spécifique.
Les périphériques matériels peuvent placer automatiquement des informations dans le Registre grâce à l'interface Plug and Play. Les logiciels d'installation des pilotes de périphériques peuvent placer des informations dans le Registre en écrivant dans les API standard.
Méthodes statiques pour l'obtention et la définition de valeurs
Dans le .NET Framework version 2.0, la classe Registry contient également les méthodes staticGetValue et SetValue, qui permettent de définir et de récupérer des valeurs à partir de clés de Registre. Ces méthodes ouvrant et fermant des clés de Registre à chaque fois qu'elles sont utilisées, leurs performances sont inférieures à celles des méthodes analogues de la classe RegistryKey lorsque vous accédez à un grand nombre de valeurs.
La classe RegistryKey fournit également des méthodes qui vous permettent de définir une sécurité de contrôle d'accès Windows pour les clés de Registre, de tester le type de données d'une valeur avant de la récupérer et de supprimer des clés.
ExempleCette section comprend deux exemples de code. Le premier exemple illustre les clés racines, tandis que le deuxième illustre les méthodes staticGetValue et SetValue.
Exemple 1
L'exemple de code suivant montre comment récupérer les sous-clés de la clé HKEY_USERS et imprimer leurs noms à l'écran. Utilisez la méthode OpenSubKey pour créer une instance de la sous-clé qui vous intéresse. Vous pouvez ensuite utiliser d'autres opérations dans RegistryKey pour manipuler cette clé.
Imports System Imports Microsoft.Win32 Class Reg Public Shared Sub Main() ' Create a RegistryKey, which will access the HKEY_USERS ' key in the registry of this machine. Dim rk As RegistryKey = Registry.Users ' Print out the keys. PrintKeys(rk) End Sub Shared Sub PrintKeys(rkey As RegistryKey) ' Retrieve all the subkeys for the specified key. Dim names As String() = rkey.GetSubKeyNames() Dim icount As Integer = 0 Console.WriteLine("Subkeys of " & rkey.Name) Console.WriteLine("-----------------------------------------------") ' Print the contents of the array to the console. Dim s As String For Each s In names Console.WriteLine(s) ' The following code puts a limit on the number ' of keys displayed. Comment it out to print the ' complete list. icount += 1 If icount >= 10 Then Exit For End If Next s End Sub End Class
using System; using Microsoft.Win32; class Reg { public static void Main() { // Create a RegistryKey, which will access the HKEY_USERS // key in the registry of this machine. RegistryKey rk = Registry.Users; // Print out the keys. PrintKeys(rk); } static void PrintKeys(RegistryKey rkey) { // Retrieve all the subkeys for the specified key. String [] names = rkey.GetSubKeyNames(); int icount = 0; Console.WriteLine("Subkeys of " + rkey.Name); Console.WriteLine("-----------------------------------------------"); // Print the contents of the array to the console. foreach (String s in names) { Console.WriteLine(s); // The following code puts a limit on the number // of keys displayed. Comment it out to print the // complete list. icount++; if (icount >= 10) break; } } }
using namespace System; using namespace Microsoft::Win32; void PrintKeys( RegistryKey ^ rkey ) { // Retrieve all the subkeys for the specified key. array<String^>^names = rkey->GetSubKeyNames(); int icount = 0; Console::WriteLine( "Subkeys of {0}", rkey->Name ); Console::WriteLine( "-----------------------------------------------" ); // Print the contents of the array to the console. System::Collections::IEnumerator^ enum0 = names->GetEnumerator(); while ( enum0->MoveNext() ) { String^ s = safe_cast<String^>(enum0->Current); Console::WriteLine( s ); // The following code puts a limit on the number // of keys displayed. Comment it out to print the // complete list. icount++; if ( icount >= 10 ) break; } } int main() { // Create a RegistryKey, which will access the HKEY_USERS // key in the registry of this machine. RegistryKey ^ rk = Registry::Users; // Print out the keys. PrintKeys( rk ); }
import System.*; import Microsoft.Win32.*; class Reg { public static void main(String[] args) { // Create a RegistryKey, which will access the HKEY_USERS // key in the registry of this machine. RegistryKey rk = Registry.Users; // Print out the keys. PrintKeys(rk); } //main static void PrintKeys(RegistryKey rKey) { // Retrieve all the subkeys for the specified key. String names[] = rKey.GetSubKeyNames(); int iCount = 0; Console.WriteLine("Subkeys of " + rKey.get_Name()); Console.WriteLine("-----------------------------------------------"); // Print the contents of the array to the console. String s = null; for (int iCtr = 0; iCtr < names.get_Length(); iCtr++) { s = names[iCtr]; Console.WriteLine(s); // The following code puts a limit on the number // of keys displayed. Comment it out to print the // complete list. iCount++; if (iCount >= 10) { break; } } } //PrintKeys } //Reg
Exemple 2
L'exemple de code suivant stocke les valeurs de plusieurs types de données dans un exemple de clé, en créant la clé ce faisant, puis récupère et affiche les valeurs. L'exemple illustre le stockage et la récupération de la paire nom/valeur par défaut (sans nom) et l'utilisation de defaultValue lorsqu'il n'existe pas de paire nom/valeur.
Imports System Imports Microsoft.Win32 Public Class Example Public Shared Sub Main() ' The name of the key must include a valid root. Const userRoot As String = "HKEY_CURRENT_USER" Const subkey As String = "RegistrySetValueExample" Const keyName As String = userRoot & "\" & subkey ' Integer values can be stored without specifying the ' registry data type, but Long values will be stored ' as strings unless you specify the type. Note that ' the integer is stored in the default name/value ' pair. Registry.SetValue(keyName, "", 5280) Registry.SetValue(keyName, "TestLong", 12345678901234, _ RegistryValueKind.QWord) ' Strings with expandable environment variables are ' stored as ordinary strings unless you specify the ' data type. Registry.SetValue(keyName, "TestExpand", "My path: %path%") Registry.SetValue(keyName, "TestExpand2", "My path: %path%", _ RegistryValueKind.ExpandString) ' Arrays of strings are stored automatically as ' MultiString. Similarly, arrays of Byte are stored ' automatically as Binary. Dim strings() As String = {"One", "Two", "Three"} Registry.SetValue(keyName, "TestArray", strings) ' Your default value is returned if the name/value pair ' does not exist. Dim noSuch As String = _ Registry.GetValue(keyName, "NoSuchName", _ "Return this default if NoSuchName does not exist.") Console.WriteLine(vbCrLf & "NoSuchName: {0}", noSuch) ' Retrieve the Integer and Long values, specifying ' numeric default values in case the name/value pairs ' do not exist. The Integer value is retrieved from the ' default (nameless) name/value pair for the key. Dim tInteger As Integer = _ Registry.GetValue(keyName, "", -1) Console.WriteLine("(Default): {0}", tInteger) Dim tLong As Long = Registry.GetValue(keyName, _ "TestLong", Long.MinValue) Console.WriteLine("TestLong: {0}", tLong) ' When retrieving a MultiString value, you can specify ' an array for the default return value. The value is ' declared inline, but could also be declared as: ' Dim default() As String = {"Default value."} ' Dim tArray() As String = _ Registry.GetValue(keyName, "TestArray", _ New String() {"Default if TestArray does not exist."}) For i As Integer = 0 To tArray.Length - 1 Console.WriteLine("TestArray({0}): {1}", i, tArray(i)) Next ' A string with embedded environment variables is not ' expanded if it was stored as an ordinary string. Dim tExpand As String = Registry.GetValue(keyName, _ "TestExpand", "Default if TestExpand does not exist.") Console.WriteLine("TestExpand: {0}", tExpand) ' A string stored as ExpandString is expanded. Dim tExpand2 As String = Registry.GetValue(keyName, _ "TestExpand2", "Default if TestExpand2 does not exist.") Console.WriteLine("TestExpand2: {0}...", _ tExpand2.Substring(0, 40)) Console.WriteLine(vbCrLf & _ "Use the registry editor to examine the key.") Console.WriteLine("Press the Enter key to delete the key.") Console.ReadLine() Registry.CurrentUser.DeleteSubKey(subkey) End Sub End Class ' ' This code example produces output similar to the following: ' 'NoSuchName: Return this default if NoSuchName does not exist. '(Default): 5280 'TestLong: 12345678901234 'TestArray(0): One 'TestArray(1): Two 'TestArray(2): Three 'TestExpand: My path: %path% 'TestExpand2: My path: D:\Program Files\Microsoft.NET\... ' 'Use the registry editor to examine the key. 'Press the Enter key to delete the key.
using System; using Microsoft.Win32; public class Example { public static void Main() { // The name of the key must include a valid root. const string userRoot = "HKEY_CURRENT_USER"; const string subkey = "RegistrySetValueExample"; const string keyName = userRoot + "\\" + subkey; // An int value can be stored without specifying the // registry data type, but long values will be stored // as strings unless you specify the type. Note that // the int is stored in the default name/value // pair. Registry.SetValue(keyName, "", 5280); Registry.SetValue(keyName, "TestLong", 12345678901234, RegistryValueKind.QWord); // Strings with expandable environment variables are // stored as ordinary strings unless you specify the // data type. Registry.SetValue(keyName, "TestExpand", "My path: %path%"); Registry.SetValue(keyName, "TestExpand2", "My path: %path%", RegistryValueKind.ExpandString); // Arrays of strings are stored automatically as // MultiString. Similarly, arrays of Byte are stored // automatically as Binary. string[] strings = {"One", "Two", "Three"}; Registry.SetValue(keyName, "TestArray", strings); // Your default value is returned if the name/value pair // does not exist. string noSuch = (string) Registry.GetValue(keyName, "NoSuchName", "Return this default if NoSuchName does not exist."); Console.WriteLine("\r\nNoSuchName: {0}", noSuch); // Retrieve the int and long values, specifying // numeric default values in case the name/value pairs // do not exist. The int value is retrieved from the // default (nameless) name/value pair for the key. int tInteger = (int) Registry.GetValue(keyName, "", -1); Console.WriteLine("(Default): {0}", tInteger); long tLong = (long) Registry.GetValue(keyName, "TestLong", long.MinValue); Console.WriteLine("TestLong: {0}", tLong); // When retrieving a MultiString value, you can specify // an array for the default return value. string[] tArray = (string[]) Registry.GetValue(keyName, "TestArray", new string[] {"Default if TestArray does not exist."}); for(int i=0; i<tArray.Length; i++) { Console.WriteLine("TestArray({0}): {1}", i, tArray[i]); } // A string with embedded environment variables is not // expanded if it was stored as an ordinary string. string tExpand = (string) Registry.GetValue(keyName, "TestExpand", "Default if TestExpand does not exist."); Console.WriteLine("TestExpand: {0}", tExpand); // A string stored as ExpandString is expanded. string tExpand2 = (string) Registry.GetValue(keyName, "TestExpand2", "Default if TestExpand2 does not exist."); Console.WriteLine("TestExpand2: {0}...", tExpand2.Substring(0, 40)); Console.WriteLine("\r\nUse the registry editor to examine the key."); Console.WriteLine("Press the Enter key to delete the key."); Console.ReadLine(); Registry.CurrentUser.DeleteSubKey(subkey); } } // // This code example produces output similar to the following: // //NoSuchName: Return this default if NoSuchName does not exist. //(Default): 5280 //TestLong: 12345678901234 //TestArray(0): One //TestArray(1): Two //TestArray(2): Three //TestExpand: My path: %path% //TestExpand2: My path: D:\Program Files\Microsoft.NET\... // //Use the registry editor to examine the key. //Press the Enter key to delete the key.
using namespace System; using namespace Microsoft::Win32; int main() { // The name of the key must include a valid root. String^ userRoot = "HKEY_CURRENT_USER"; String^ subKey = "RegistrySetValueExample2"; String^ keyName = String::Concat(userRoot, "\\", subKey); // An int value can be stored without specifying the // registry data type, but Int64 values will be stored // as strings unless you specify the type. Note that // the int is stored in the default name/value // pair. Registry::SetValue(keyName, "", 5280); Registry::SetValue(keyName, "TestInt64", 12345678901234, RegistryValueKind::QWord); // Strings with expandable environment variables are // stored as ordinary strings unless you specify the // data type. Registry::SetValue(keyName, "TestExpand", "My path: %path%"); Registry::SetValue(keyName, "TestExpand2", "My path: %path%", RegistryValueKind::ExpandString); // Arrays of strings are stored automatically as // MultiString. Similarly, arrays of Byte are stored // automatically as Binary. array<String^>^ strings = {"One", "Two", "Three"}; Registry::SetValue(keyName, "TestArray", strings); // Your default value is returned if the name/value pair // does not exist. String^ noSuch = (String^)Registry::GetValue(keyName, "NoSuchName", "Return this default if NoSuchName does not exist."); Console::WriteLine("\r\nNoSuchName: {0}", noSuch); // Retrieve the int and Int64 values, specifying // numeric default values in case the name/value pairs // do not exist. The int value is retrieved from the // default (nameless) name/value pair for the key. int testInteger = (int)Registry::GetValue(keyName, "", -1); Console::WriteLine("(Default): {0}", testInteger); long long testInt64 = (long long)Registry::GetValue(keyName, "TestInt64", System::Int64::MinValue); Console::WriteLine("TestInt64: {0}", testInt64); // When retrieving a MultiString value, you can specify // an array for the default return value. array<String^>^ testArray = (array<String^>^)Registry::GetValue( keyName, "TestArray", gcnew array<String^> {"Default if TestArray does not exist."}); for (int i = 0; i < testArray->Length; i++) { Console::WriteLine("TestArray({0}): {1}", i, testArray[i]); } // A string with embedded environment variables is not // expanded if it was stored as an ordinary string. String^ testExpand = (String^)Registry::GetValue(keyName, "TestExpand", "Default if TestExpand does not exist."); Console::WriteLine("TestExpand: {0}", testExpand); // A string stored as ExpandString is expanded. String^ testExpand2 = (String^)Registry::GetValue(keyName, "TestExpand2", "Default if TestExpand2 does not exist."); Console::WriteLine( "TestExpand2: {0}...", testExpand2->Substring(0, 40)); Console::WriteLine( "\r\nUse the registry editor to examine the key."); Console::WriteLine("Press the Enter key to delete the key."); Console::ReadLine(); Registry::CurrentUser->DeleteSubKey(subKey); } // // This code example produces output similar to the following: // // NoSuchName: Return this default if NoSuchName does not exist. // (Default): 5280 // TestInt64: 12345678901234 // TestArray(0): One // TestArray(1): Two // TestArray(2): Three // TestExpand: My path: %path% // TestExpand2: My path: D:\Program Files\Microsoft.NET\... // // Use the registry editor to examine the key. // Press the Enter key to delete the key.
Sécurité des threads
Plates-formesWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Informations de version
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ