RegistryKey Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente un nœud de niveau clé dans le registre Windows. Cette classe est une encapsulation de Registre.
public ref class RegistryKey sealed : MarshalByRefObject, IDisposable
public sealed class RegistryKey : MarshalByRefObject, IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class RegistryKey : MarshalByRefObject, IDisposable
type RegistryKey = class
inherit MarshalByRefObject
interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type RegistryKey = class
inherit MarshalByRefObject
interface IDisposable
Public NotInheritable Class RegistryKey
Inherits MarshalByRefObject
Implements IDisposable
- Héritage
- Attributs
- Implémente
Exemples
L’exemple de code suivant montre comment créer une sous-clé sous HKEY_CURRENT_USER, manipuler son contenu, puis supprimer la sous-clé.
using namespace System;
using namespace System::Security::Permissions;
using namespace Microsoft::Win32;
int main()
{
// Create a subkey named Test9999 under HKEY_CURRENT_USER.
RegistryKey ^ test9999 = Registry::CurrentUser->CreateSubKey( "Test9999" );
// Create two subkeys under HKEY_CURRENT_USER\Test9999.
test9999->CreateSubKey( "TestName" )->Close();
RegistryKey ^ testSettings = test9999->CreateSubKey( "TestSettings" );
// Create data for the TestSettings subkey.
testSettings->SetValue( "Language", "French" );
testSettings->SetValue( "Level", "Intermediate" );
testSettings->SetValue( "ID", 123 );
testSettings->Close();
// Print the information from the Test9999 subkey.
Console::WriteLine( "There are {0} subkeys under Test9999.", test9999->SubKeyCount.ToString() );
array<String^>^subKeyNames = test9999->GetSubKeyNames();
for ( int i = 0; i < subKeyNames->Length; i++ )
{
RegistryKey ^ tempKey = test9999->OpenSubKey( subKeyNames[ i ] );
Console::WriteLine( "\nThere are {0} values for {1}.", tempKey->ValueCount.ToString(), tempKey->Name );
array<String^>^valueNames = tempKey->GetValueNames();
for ( int j = 0; j < valueNames->Length; j++ )
{
Console::WriteLine( "{0,-8}: {1}", valueNames[ j ], tempKey->GetValue( valueNames[ j ] )->ToString() );
}
}
// Delete the ID value.
testSettings = test9999->OpenSubKey( "TestSettings", true );
testSettings->DeleteValue( "id" );
// Verify the deletion.
Console::WriteLine( dynamic_cast<String^>(testSettings->GetValue( "id", "ID not found." )) );
testSettings->Close();
// 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();
}
}
using System;
using System.Security.Permissions;
using Microsoft.Win32;
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();
}
}
}
Imports System.Security.Permissions
Imports Microsoft.Win32
Public Class RegKey
Shared Sub Main()
' Create a subkey named Test9999 under HKEY_CURRENT_USER.
Dim test9999 As RegistryKey = _
Registry.CurrentUser.CreateSubKey("Test9999")
' Create two subkeys under HKEY_CURRENT_USER\Test9999.
test9999.CreateSubKey("TestName").Close()
Dim testSettings As RegistryKey = _
test9999.CreateSubKey("TestSettings")
' Create data for the TestSettings subkey.
testSettings.SetValue("Language", "French")
testSettings.SetValue("Level", "Intermediate")
testSettings.SetValue("ID", 123)
testSettings.Close()
' Print the information from the Test9999 subkey.
Console.WriteLine("There are {0} subkeys under Test9999.", _
test9999.SubKeyCount.ToString())
For Each subKeyName As String In test9999.GetSubKeyNames()
Dim tempKey As RegistryKey = _
test9999.OpenSubKey(subKeyName)
Console.WriteLine(vbCrLf & "There are {0} values for " & _
"{1}.", tempKey.ValueCount.ToString(), tempKey.Name)
For Each valueName As String In tempKey.GetValueNames()
Console.WriteLine("{0,-8}: {1}", valueName, _
tempKey.GetValue(valueName).ToString())
Next
Next
' Delete the ID value.
testSettings = test9999.OpenSubKey("TestSettings", True)
testSettings.DeleteValue("id")
' Verify the deletion.
Console.WriteLine(CType(testSettings.GetValue( _
"id", "ID not found."), String))
testSettings.Close()
' Delete or close the new subkey.
Console.Write(vbCrLf & "Delete newly created " & _
"registry key? (Y/N) ")
If Char.ToUpper(Convert.ToChar(Console.Read())) = "Y"C Then
Registry.CurrentUser.DeleteSubKeyTree("Test9999")
Console.WriteLine(vbCrLf & "Registry key {0} deleted.", _
test9999.Name)
Else
Console.WriteLine(vbCrLf & "Registry key {0} closed.", _
test9999.ToString())
test9999.Close()
End If
End Sub
End Class
Remarques
Pour obtenir une instance de RegistryKey, utilisez l’un des membres statiques de la Registry classe.
Le Registre agit comme un référentiel central d’informations pour le système d’exploitation et les applications sur un ordinateur. Le Registre est organisé dans un format hiérarchique, en fonction d’un ordre logique des éléments stockés dans celui-ci (consultez Registry les éléments de niveau base de cette hiérarchie). Lorsque vous stockez des informations dans le Registre, sélectionnez l’emplacement approprié en fonction du type d’informations stockés. Veillez à éviter de détruire les informations créées par d’autres applications, car cela peut entraîner l’exposition d’un comportement inattendu et peut également avoir un effet négatif sur votre propre application.
Important
Ce type implémente l’interface IDisposable . Une fois que vous avez fini d’utiliser le type, vous devez le supprimer directement ou indirectement. Pour supprimer directement le type, appelez sa Dispose méthode dans un try/catch bloc. Pour la supprimer indirectement, utilisez une construction de langage telle que using (en C#) ou Using (en Visual Basic). Pour plus d’informations, consultez la section « Utilisation d’un objet implémentant IDisposable » dans la rubrique d’interface IDisposable .
Les clés de Registre sont l’unité de base de l’organisation dans le Registre et peuvent être comparées aux dossiers de l’Explorateur de fichiers. Une clé particulière peut avoir des sous-clés, tout comme un dossier peut avoir des sous-dossiers. Chaque clé peut être supprimée, tant que l’utilisateur dispose des autorisations appropriées pour le faire et que la clé n’est pas une clé de base ou au niveau directement sous les clés de base. Chaque clé peut également avoir plusieurs valeurs associées (une valeur peut être comparée à un fichier), qui sont utilisées pour stocker les informations , par exemple des informations sur une application installée sur l’ordinateur. Chaque valeur contient une information particulière, qui peut être récupérée ou mise à jour si nécessaire. Par exemple, vous pouvez créer une RegistryKey application pour votre entreprise, sous la clé HKEY_LOCAL_MACHINE\Software, puis une sous-clé pour chaque application que votre entreprise crée. Chaque sous-clé contient les informations spécifiques à cette application, telles que les paramètres de couleur, l’emplacement et la taille de l’écran, ou les extensions de fichier reconnues.
Notez que les informations stockées dans le Registre sont disponibles pour d’autres applications et utilisateurs. Par conséquent, elles ne doivent pas être utilisées pour stocker les données de sécurité ou les informations d’application critiques.
Avertissement
N’exposez RegistryKey pas d’objets de telle sorte 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.
À compter de la .NET Framework 4, la longueur d’une clé de Registre n’est plus limitée à 255 caractères.
Propriétés
| Nom | Description |
|---|---|
| Handle |
Obtient un SafeRegistryHandle objet qui représente la clé de Registre encapsulée par l’objet actuel RegistryKey . |
| Name |
Récupère le nom de la clé. |
| SubKeyCount |
Récupère le nombre de sous-clés de la clé actuelle. |
| ValueCount |
Récupère le nombre de valeurs dans la clé. |
| View |
Obtient la vue utilisée pour créer la clé de Registre. |
Méthodes
| Nom | Description |
|---|---|
| Close() |
Ferme la clé et la vide sur le disque si son contenu a été modifié. |
| CreateObjRef(Type) |
Crée un objet qui contient toutes les informations pertinentes requises pour générer un proxy utilisé pour communiquer avec un objet distant. (Hérité de MarshalByRefObject) |
| CreateSubKey(String, Boolean, RegistryOptions) |
Crée une sous-clé ou ouvre une sous-clé existante avec l’accès spécifié. Disponible à partir de .NET Framework 4.6. |
| CreateSubKey(String, Boolean) |
Crée une sous-clé ou ouvre une sous-clé existante avec l’accès spécifié. Disponible à partir de .NET Framework 4.6. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity) |
Crée une sous-clé ou ouvre une sous-clé pour l’accès en écriture, à l’aide de l’option de vérification des autorisations spécifiée, de l’option de Registre et de la sécurité du Registre. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions) |
Crée une sous-clé ou ouvre une sous-clé pour l’accès en écriture, à l’aide des options de contrôle d’autorisation et de Registre spécifiées. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity) |
Crée une sous-clé ou ouvre une sous-clé existante pour l’accès en écriture, à l’aide de l’option de vérification des autorisations et de la sécurité du Registre spécifiées. |
| CreateSubKey(String, RegistryKeyPermissionCheck) |
Crée une sous-clé ou ouvre une sous-clé existante pour l’accès en écriture à l’aide de l’option de vérification d’autorisation spécifiée. |
| CreateSubKey(String) |
Crée une sous-clé ou ouvre une sous-clé existante pour l’accès en écriture. |
| DeleteSubKey(String, Boolean) |
Supprime la sous-clé spécifiée et spécifie si une exception est levée si la sous-clé est introuvable. |
| DeleteSubKey(String) |
Supprime la sous-clé spécifiée. |
| DeleteSubKeyTree(String, Boolean) |
Supprime la sous-clé spécifiée et toutes les sous-clés enfants de manière récursive et spécifie si une exception est levée si la sous-clé est introuvable. |
| DeleteSubKeyTree(String) |
Supprime une sous-clé et toutes les sous-clés enfants de manière récursive. |
| DeleteValue(String, Boolean) |
Supprime la valeur spécifiée de cette clé et spécifie si une exception est levée si la valeur est introuvable. |
| DeleteValue(String) |
Supprime la valeur spécifiée de cette clé. |
| Dispose() |
Libère toutes les ressources utilisées par l’instance actuelle de la RegistryKey classe. |
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| Finalize() |
Ferme la clé et la vide sur le disque si le contenu a été modifié. |
| Flush() |
Écrit tous les attributs de la clé de Registre ouverte spécifiée dans le Registre. |
| FromHandle(SafeRegistryHandle, RegistryView) |
Crée une clé de Registre à partir d’un handle et d’un paramètre d’affichage de Registre spécifiés. |
| FromHandle(SafeRegistryHandle) |
Crée une clé de Registre à partir d’un handle spécifié. |
| GetAccessControl() |
Retourne la sécurité du contrôle d’accès pour la clé de Registre actuelle. |
| GetAccessControl(AccessControlSections) |
Retourne les sections spécifiées de la sécurité du contrôle d’accès pour la clé de Registre actuelle. |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetLifetimeService() |
Récupère l’objet de service de durée de vie actuel qui contrôle la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject) |
| GetSubKeyNames() |
Récupère un tableau de chaînes qui contient tous les noms de sous-clé. |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| GetValue(String, Object, RegistryValueOptions) |
Récupère la valeur associée aux options de nom et de récupération spécifiées. Si le nom est introuvable, retourne la valeur par défaut que vous fournissez. |
| GetValue(String, Object) |
Récupère la valeur associée au nom spécifié. Si le nom est introuvable, retourne la valeur par défaut que vous fournissez. |
| GetValue(String) |
Récupère la valeur associée au nom spécifié. Retourne |
| GetValueKind(String) |
Récupère le type de données du Registre de la valeur associée au nom spécifié. |
| GetValueNames() |
Récupère un tableau de chaînes qui contient tous les noms de valeurs associés à cette clé. |
| InitializeLifetimeService() |
Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| MemberwiseClone(Boolean) |
Crée une copie superficielle de l’objet actuel MarshalByRefObject . (Hérité de MarshalByRefObject) |
| OpenBaseKey(RegistryHive, RegistryView) |
Ouvre un nouveau RegistryKey qui représente la clé demandée sur l’ordinateur local avec la vue spécifiée. |
| OpenRemoteBaseKey(RegistryHive, String, RegistryView) |
Ouvre une nouvelle clé de Registre qui représente la clé demandée sur un ordinateur distant avec la vue spécifiée. |
| OpenRemoteBaseKey(RegistryHive, String) |
Ouvre un nouveau RegistryKey qui représente la clé demandée sur un ordinateur distant. |
| OpenSubKey(String, Boolean) |
Récupère une sous-clé spécifiée et spécifie si l’accès en écriture doit être appliqué à la clé. |
| OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) |
Récupère la sous-clé spécifiée pour l’accès en lecture ou en lecture/écriture, en demandant les droits d’accès spécifiés. |
| OpenSubKey(String, RegistryKeyPermissionCheck) |
Récupère la sous-clé spécifiée pour l’accès en lecture ou en lecture/écriture. |
| OpenSubKey(String, RegistryRights) |
Récupère une sous-clé avec le nom et les droits d’accès spécifiés. Disponible à partir de .NET Framework 4.6. |
| OpenSubKey(String) |
Récupère une sous-clé en lecture seule. |
| SetAccessControl(RegistrySecurity) |
Applique Windows sécurité du contrôle d’accès à une clé de Registre existante. |
| SetValue(String, Object, RegistryValueKind) |
Définit la valeur d’une paire nom/valeur dans la clé de Registre, à l’aide du type de données de Registre spécifié. |
| SetValue(String, Object) |
Définit la paire nom/valeur spécifiée. |
| ToString() |
Récupère une représentation sous forme de chaîne de cette clé. |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| IDisposable.Dispose() |
Cette API prend en charge l'infrastructure du produit et n'est pas destinée à être utilisée directement à partir de votre code. Effectue une Close() opération sur la clé actuelle. |