RegistryKeyPermissionCheck RegistryKeyPermissionCheck RegistryKeyPermissionCheck RegistryKeyPermissionCheck Enum

Définition

Spécifie si des vérifications de la sécurité sont effectuées lors de l'ouverture de clés de Registre et de l'accès à leurs paires nom/valeur.Specifies whether security checks are performed when opening registry keys and accessing their name/value pairs.

public enum class RegistryKeyPermissionCheck
public enum RegistryKeyPermissionCheck
type RegistryKeyPermissionCheck = 
Public Enum RegistryKeyPermissionCheck
Héritage
RegistryKeyPermissionCheckRegistryKeyPermissionCheckRegistryKeyPermissionCheckRegistryKeyPermissionCheck

Champs

Default Default Default Default 0

La clé de Registre hérite le mode de son parent.The registry key inherits the mode of its parent. Des vérifications de la sécurité sont effectuées lors d'une tentative d'accès aux sous-clés ou aux valeurs, à moins que le parent n'ait été ouvert en mode ReadSubTree ou ReadWriteSubTree.Security checks are performed when trying to access subkeys or values, unless the parent was opened with ReadSubTree or ReadWriteSubTree mode.

ReadSubTree ReadSubTree ReadSubTree ReadSubTree 1

Des vérifications de la sécurité ne sont pas effectuées lors de l'accès aux sous-clés ou aux valeurs.Security checks are not performed when accessing subkeys or values. Une vérification de la sécurité est effectuée lors d'une tentative d'ouverture de la clé actuelle, à moins que le parent n'ait été ouvert avec ReadSubTree ou ReadWriteSubTree.A security check is performed when trying to open the current key, unless the parent was opened with ReadSubTree or ReadWriteSubTree.

ReadWriteSubTree ReadWriteSubTree ReadWriteSubTree ReadWriteSubTree 2

Des vérifications de la sécurité ne sont pas effectuées lors de l'accès aux sous-clés ou aux valeurs.Security checks are not performed when accessing subkeys or values. Une vérification de la sécurité est effectuée lors d'une tentative d'ouverture de la clé actuelle, à moins que le parent n'ait été ouvert avec ReadWriteSubTree.A security check is performed when trying to open the current key, unless the parent was opened with ReadWriteSubTree.

Exemples

L’exemple de code suivant crée une sous-clé contenant les paires clé/valeur 100 et la ferme.The following code example creates a subkey containing 100 key/value pairs and closes it. L’exemple ouvre la sous-clé avec la valeur par défaut et enregistre le temps nécessaire à la lecture de toutes les valeurs.The example opens the subkey with Default and records the time it takes to read all the values. L’exemple ouvre ensuite la sous-clé avec ReadSubTree et enregistre le temps nécessaire à la lecture de toutes les valeurs.Then the example opens the subkey with ReadSubTree and records the time it takes to read all the values. Enfin, l’exemple calcule et affiche le pourcentage d’amélioration.Finally, the example computes and displays the percentage improvement.

using System;
using Microsoft.Win32;
using System.Diagnostics;

public class Example
{
    public static void Main()
    {
        const int LIMIT = 100;
        RegistryKey cu = Registry.CurrentUser;
        const string testKey = "RegistryKeyPermissionCheckExample";

        Console.WriteLine("Generating {0} key/value pairs.", LIMIT);
        RegistryKey rk = cu.CreateSubKey(testKey);
        for (int i = 0; i < LIMIT; i++)
        {
            rk.SetValue("Key" + i, i);
        }

        rk.Close();

        Stopwatch s = new Stopwatch();

        // On the default setting, security is checked every time
        // a key/value pair is read.
        rk = cu.OpenSubKey(testKey, RegistryKeyPermissionCheck.Default);
        
        s.Start();
        for (int i = 0; i < LIMIT; i++)
        {
            rk.GetValue("Key" + i, i);
        }
        s.Stop();
        rk.Close();
        long delta1 = s.ElapsedTicks;

        s.Reset();

        // When the key is opened with ReadSubTree, security is 
        // not checked when the values are read.
        rk = cu.OpenSubKey(testKey, RegistryKeyPermissionCheck.ReadSubTree);
        
        s.Start();
        for (int i = 0; i < LIMIT; i++)
        {
            rk.GetValue("Key" + i, i);
        }
        s.Stop();
        rk.Close();
        long delta2 = s.ElapsedTicks;

        double faster = (double) (delta1 - delta2) / (double) delta1;
        Console.WriteLine("ReadSubTree is {0}% faster for {1} values.",
            (faster * 100).ToString("0.0"), LIMIT);

        cu.DeleteSubKey(testKey);
    }
}

/* This code example produces output similar to the following:

Generating 100 key/value pairs.
ReadSubTree is 23.4% faster for 100 values.
 */
Imports Microsoft.Win32
Imports System.Diagnostics

Public Class Example
    
    Public Shared Sub Main() 

        Const LIMIT As Integer = 100
        Dim cu As RegistryKey = Registry.CurrentUser
        Const testKey As String = "RegistryKeyPermissionCheckExample"
        
        Console.WriteLine("Generating {0} key/value pairs.", LIMIT)
        Dim rk As RegistryKey = cu.CreateSubKey(testKey)

        For i As Integer = 0 To LIMIT
            rk.SetValue("Key" & i, i)
        Next i
        
        rk.Close()
        
        Dim s As New Stopwatch()
        
        ' On the default setting, security is checked every time
        ' a key/value pair is read.
        rk = cu.OpenSubKey(testKey, _
            RegistryKeyPermissionCheck.Default)
        
        s.Start()
        For i As Integer = 0 To LIMIT
            rk.GetValue("Key" & i, i)
        Next i
        s.Stop()
        rk.Close()
        Dim delta1 As Long = s.ElapsedTicks
        
        s.Reset()
        
        ' When the key is opened with ReadSubTree, security is 
        ' not checked when the values are read.
        rk = cu.OpenSubKey(testKey, _
            RegistryKeyPermissionCheck.ReadSubTree)
        
        s.Start()
        For i As Integer = 0 To LIMIT
            rk.GetValue("Key" & i, i)
        Next i
        s.Stop()
        rk.Close()
        Dim delta2 As Long = s.ElapsedTicks
        
        Dim faster As Double = _
            CDbl(delta1 - delta2) * 100.0 / CDbl(delta1)
        Console.WriteLine("ReadSubTree is {0}% faster for {1} values.", _
            faster.ToString("0.0"), LIMIT)
        
        cu.DeleteSubKey(testKey)
    
    End Sub 
End Class 

' This code example produces output similar to the following:
'
'Generating 100 key/value pairs.
'ReadSubTree is 23.4% faster for 100 values.
' 

Remarques

Quand une application enregistre ou récupère un grand nombre de paramètres de Registre à partir d’un ensemble de sous-clés, de nombreuses vérifications de sécurité redondantes sont effectuées.When an application saves or retrieves a large number of registry settings from a set of subkeys, numerous redundant security checks are performed. Cette énumération spécifie quand les contrôles de sécurité sur une clé doivent être omis.This enumeration specifies when security checks on a key are to be omitted.

Le tableau suivant indique le moment où les vérifications de la sécurité sont effectuées, en fonction de la façon dont la clé parente et la clé actuelle sont ouvertes.The following table shows when security checks are performed, based on the way the parent key and the current key are opened.

Clé parente ouverte avecParent key opened with Clé actuelle ouverte avecCurrent key opened with RésultatResult
Par défautDefault Par défautDefault Une vérification de la sécurité est effectuée lors de l’accès à une valeur de la clé actuelle, ou lors d’une tentative d’accès à une sous-clé.A security check is performed when accessing any value in the current key, or when attempting to access a subkey. Il s’agit du comportement dans les versions 1,0 et 1,1 de .NET Framework.This is the behavior in the .NET Framework versions 1.0 and 1.1.
Par défautDefault ReadSubTreeReadSubTree Une vérification de la sécurité est effectuée lors de la tentative d’ouverture de la clé actuelle.A security check is performed when trying to open the current key.
Par défautDefault ReadWriteSubTreeReadWriteSubTree Une vérification de la sécurité est effectuée lors de la tentative d’ouverture de la clé actuelle.A security check is performed when trying to open the current key.
ReadSubTreeReadSubTree Par défaut ou ReadSubTreeDefault or ReadSubTree Aucune vérification de sécurité n’est effectuée lors de l’ouverture de la clé actuelle ou de ses valeurs.No security checks are performed when opening the current key or its values.
ReadSubTreeReadSubTree ReadWriteSubTreeReadWriteSubTree Une vérification de la sécurité est effectuée lors de la tentative d’ouverture de la clé actuelle.A security check is performed when trying to open the current key.
ReadWriteSubTreeReadWriteSubTree AnyAny Aucune vérification de sécurité n’est effectuée lors de l’ouverture de la clé actuelle ou de ses valeurs.No security checks are performed when opening the current key or its values.

S’applique à