RegistryKeyPermissionCheck RegistryKeyPermissionCheck RegistryKeyPermissionCheck RegistryKeyPermissionCheck Enum

Definizione

Specifica se i controlli di sicurezza vengono eseguiti all'apertura delle chiavi del Registro di sistema e all'accesso alle relative coppie nome/valore.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
Ereditarietà
RegistryKeyPermissionCheckRegistryKeyPermissionCheckRegistryKeyPermissionCheckRegistryKeyPermissionCheck

Campi

Default Default Default Default 0

La chiave del Registro di sistema eredita la modalità della relativa chiave padre.The registry key inherits the mode of its parent. I controlli di sicurezza vengono eseguiti quando si tenta di accedere a sottochiavi o a valori, a meno che la chiave padre non sia stata aperta con la modalità ReadSubTree o 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

I controlli di sicurezza non vengono eseguiti quando si accede a sottochiavi o a valori.Security checks are not performed when accessing subkeys or values. Un controllo di sicurezza viene eseguito quando si tenta di aprire la chiave corrente, a meno che la chiave padre non sia stata aperta con la modalità ReadSubTree o 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

I controlli di sicurezza non vengono eseguiti quando si accede a sottochiavi o a valori.Security checks are not performed when accessing subkeys or values. Un controllo di sicurezza viene eseguito quando si tenta di aprire la chiave corrente, a meno che la chiave padre non sia stata aperta con la modalità ReadWriteSubTree.A security check is performed when trying to open the current key, unless the parent was opened with ReadWriteSubTree.

Esempi

Esempio di codice seguente crea una sottochiave che contiene 100 coppie chiave/valore e lo chiude.The following code example creates a subkey containing 100 key/value pairs and closes it. L'esempio consente di aprire la sottochiave predefinito e registra il tempo che necessario per leggere tutti i valori.The example opens the subkey with Default and records the time it takes to read all the values. Nell'esempio viene quindi apre la sottochiave con ReadSubTree e registra il tempo che necessario per leggere tutti i valori.Then the example opens the subkey with ReadSubTree and records the time it takes to read all the values. Infine, l'esempio calcola e Visualizza la percentuale di miglioramento.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 System
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.
' 

Commenti

Quando un'applicazione consente di salvare o recupera un numero elevato di impostazioni del Registro di sistema da un set di sottochiavi, vengono eseguiti numerosi controlli di sicurezza ridondanti.When an application saves or retrieves a large number of registry settings from a set of subkeys, numerous redundant security checks are performed. Questa enumerazione specifica quando devono essere omessi controlli di sicurezza su una chiave.This enumeration specifies when security checks on a key are to be omitted.

La tabella seguente illustra quando vengono eseguiti controlli di sicurezza, in base alla modalità di che apertura della chiave corrente e la chiave padre.The following table shows when security checks are performed, based on the way the parent key and the current key are opened.

Chiave padre aperti conParent key opened with Aprire con chiave correnteCurrent key opened with RisultatoResult
Impostazione predefinitaDefault Impostazione predefinitaDefault Un controllo di sicurezza viene eseguito durante l'accesso a qualsiasi valore della chiave corrente, o quando si tenta di accedere a una sottochiave.A security check is performed when accessing any value in the current key, or when attempting to access a subkey. Questo è il comportamento nelle versioni 1.0 e 1.1 di .NET Framework.This is the behavior in the .NET Framework versions 1.0 and 1.1.
Impostazione predefinitaDefault ReadSubTreeReadSubTree Quando si tenta di aprire la chiave corrente, viene eseguito un controllo di sicurezza.A security check is performed when trying to open the current key.
Impostazione predefinitaDefault ReadWriteSubTreeReadWriteSubTree Quando si tenta di aprire la chiave corrente, viene eseguito un controllo di sicurezza.A security check is performed when trying to open the current key.
ReadSubTreeReadSubTree Valore predefinito o ReadSubTreeDefault or ReadSubTree Nessun controllo di sicurezza viene eseguito durante l'apertura della chiave corrente o i relativi valori.No security checks are performed when opening the current key or its values.
ReadSubTreeReadSubTree ReadWriteSubTreeReadWriteSubTree Quando si tenta di aprire la chiave corrente, viene eseguito un controllo di sicurezza.A security check is performed when trying to open the current key.
ReadWriteSubTreeReadWriteSubTree QualsiasiAny Nessun controllo di sicurezza viene eseguito durante l'apertura della chiave corrente o i relativi valori.No security checks are performed when opening the current key or its values.

Si applica a