Exporter (0) Imprimer
Développer tout

RegistryKey, classe

Mise à jour : novembre 2007

Représente un nœud de niveau clé dans le Registre Windows. Cette classe est une encapsulation du Registre.

Espace de noms :  Microsoft.Win32
Assembly :  mscorlib (dans mscorlib.dll)

[ComVisibleAttribute(true)]
public sealed class RegistryKey : MarshalByRefObject, 
	IDisposable
/** @attribute ComVisibleAttribute(true) */
public final class RegistryKey extends MarshalByRefObject implements IDisposable
public final class RegistryKey extends MarshalByRefObject implements IDisposable

Pour obtenir une instance de RegistryKey, utilisez l'un des membres statiques de la classe Registry.

Le Registre tient lieu de référentiel central des informations pour le système d'exploitation et les applications d'un ordinateur. Le Registre présente une structure hiérarchique basée sur le classement logique des éléments qu'il stocke (consultez Registry pour connaître les éléments de base de cette hiérarchie). Lorsque vous stockez des informations dans le Registre, sélectionnez un emplacement adapté, en fonction du type des informations concernées. Veillez à ne pas détruire des informations créées par d'autres applications, car celles-ci risquent d'adopter un comportement imprévisible, ce qui peut également avoir des conséquences regrettables pour votre propre application.

Les clés de Registre sont à l'organisation du Registre ce que les dossiers sont à l'Explorateur Windows, c'est-à-dire une unité de base. Une clé donnée peut avoir des sous-clés, de la même façon qu'un dossier peut contenir des sous-dossiers. Chaque clé peut être supprimée, à condition que l'utilisateur dispose des autorisations adaptées et que la clé ne soit pas une clé de base ou qu'elle ne se trouve pas au niveau directement inférieur aux clés de base. Chaque clé peut également avoir plusieurs valeurs (une valeur étant comparable à un fichier) qui servent à stocker les informations, par exemple les informations concernant une application installée sur l'ordinateur. Chaque valeur contient des informations spécifiques qui peuvent être récupérées ou mises à jour à la demande. Par exemple, vous pouvez créer une RegistryKey pour votre société (sous la clé HKEY_LOCAL_MACHINE\Software), puis une sous-clé pour chaque application créée par votre société. Chaque sous-clé détient les informations spécifiques à cette application, telles que les paramètres de couleurs, les emplacements et tailles d'affichage ou les extensions de fichier reconnues.

Vous remarquerez que les informations stockées dans le Registre sont accessibles aux autres applications et utilisateurs et que, par conséquent, elles ne doivent pas être utilisées pour stocker des données de sécurité ou des informations importantes sur une application.

Attention :

N'exposez pas les objets RegistryKey de telle façon qu'un programme malveillant puisse créer des milliers de sous-clés ou de paires clé/valeur sans signification. Par exemple, n'autorisez pas les appelants à entrer des clés ou des valeurs arbitraires.

Remarque sur la plateforme Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows CE :

Dans les applications .NET Compact Framework, avant de supprimer une sous-clé, toutes les instances ouvertes de la sous-clé et de ses sous-clés enfants doivent être fermées explicitement. La profondeur maximale des sous-clés, telle que déterminée par Windows CE, est de 15.

L'exemple de code suivant illustre la création d'une sous-clé sous HKEY_CURRENT_USER, la manipulation de son contenu, puis sa suppression.

using System;
using System.Security.Permissions;
using Microsoft.Win32;

[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum,
    ViewAndModify = "HKEY_CURRENT_USER")]

class RegKey
{
    static void Main()
    {
        // Create a subkey named Test9999 under HKEY_CURRENT_USER.
        RegistryKey test9999 = 
            Registry.CurrentUser.CreateSubKey("Test9999");
        // Create two subkeys under HKEY_CURRENT_USER\Test9999. The
        // keys are disposed when execution exits the using statement.
        using(RegistryKey 
            testName = test9999.CreateSubKey("TestName"),
            testSettings = test9999.CreateSubKey("TestSettings"))
        {
            // Create data for the TestSettings subkey.
            testSettings.SetValue("Language", "French");
            testSettings.SetValue("Level", "Intermediate");
            testSettings.SetValue("ID", 123);
        }

        // Print the information from the Test9999 subkey.
        Console.WriteLine("There are {0} subkeys under {1}.", 
            test9999.SubKeyCount.ToString(), test9999.Name);
        foreach(string subKeyName in test9999.GetSubKeyNames())
        {
            using(RegistryKey 
                tempKey = test9999.OpenSubKey(subKeyName))
            {
                Console.WriteLine("\nThere are {0} values for {1}.", 
                    tempKey.ValueCount.ToString(), tempKey.Name);
                foreach(string valueName in tempKey.GetValueNames())
                {
                    Console.WriteLine("{0,-8}: {1}", valueName, 
                        tempKey.GetValue(valueName).ToString());
                }
            }
        }

        using(RegistryKey 
            testSettings = test9999.OpenSubKey("TestSettings", true))
        {
            // Delete the ID value.
            testSettings.DeleteValue("id");

            // Verify the deletion.
            Console.WriteLine((string)testSettings.GetValue(
                "id", "ID not found."));
        }

        // Delete or close the new subkey.
        Console.Write("\nDelete newly created registry key? (Y/N) ");
        if(Char.ToUpper(Convert.ToChar(Console.Read())) == 'Y')
        {
            Registry.CurrentUser.DeleteSubKeyTree("Test9999");
            Console.WriteLine("\nRegistry key {0} deleted.", 
                test9999.Name);
        }
        else
        {
            Console.WriteLine("\nRegistry key {0} closed.", 
                test9999.ToString());
            test9999.Close();
        }
    }
}


Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile pour Smartphone, Windows Mobile pour Pocket PC

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Pris en charge dans : 3.5, 2.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft