RegistryKeyPermissionCheck RegistryKeyPermissionCheck RegistryKeyPermissionCheck RegistryKeyPermissionCheck Enum

Definition

Gibt an, ob beim Öffnen von Registrierungsschlüsseln und beim Zugreifen auf deren Name-Wert-Paare Sicherheitsüberprüfungen durchgeführt werden.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
Vererbung
RegistryKeyPermissionCheckRegistryKeyPermissionCheckRegistryKeyPermissionCheckRegistryKeyPermissionCheck

Felder

Default Default Default Default 0

Der Registrierungsschlüssel erbt den Modus von seinem übergeordneten Element.The registry key inherits the mode of its parent. Beim Versuch, auf Unterschlüssel oder Werte zuzugreifen, werden Sicherheitsüberprüfungen durchgeführt, sofern das übergeordnete Element nicht mit dem ReadSubTree-Modus oder dem ReadWriteSubTree-Modus geöffnet wurde.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

Sicherheitsüberprüfungen werden nicht durchgeführt, wenn auf Unterschlüssel oder Werte zugegriffen wird.Security checks are not performed when accessing subkeys or values. Beim Versuch, den aktuellen Schlüssel zu öffnen, wird eine Sicherheitsüberprüfung durchgeführt, sofern das übergeordnete Element nicht mit ReadSubTree oder ReadWriteSubTree geöffnet wurde.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

Sicherheitsüberprüfungen werden nicht durchgeführt, wenn auf Unterschlüssel oder Werte zugegriffen wird.Security checks are not performed when accessing subkeys or values. Beim Versuch, den aktuellen Schlüssel zu öffnen, wird eine Sicherheitsüberprüfung durchgeführt, sofern das übergeordnete Element nicht mit ReadWriteSubTree geöffnet wurde.A security check is performed when trying to open the current key, unless the parent was opened with ReadWriteSubTree.

Beispiele

Im folgenden Codebeispiel wird mit 100 Schlüssel/Wert-Paaren erstellt und wird geschlossen.The following code example creates a subkey containing 100 key/value pairs and closes it. Im Beispiel wird der Unterschlüssel mit dem Standardwert und zeichnet den Zeitaufwand für das Lesen aller Werte.The example opens the subkey with Default and records the time it takes to read all the values. Klicken Sie dann im Beispiel wird der Unterschlüssel mit ReadSubTree und zeichnet den Zeitaufwand für das Lesen aller Werte.Then the example opens the subkey with ReadSubTree and records the time it takes to read all the values. Schließlich wird im Beispiel berechnet und zeigt die prozentuale leistungsverbesserung.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.
' 

Hinweise

Wenn eine Anwendung speichert oder eine große Anzahl von registrierungseinstellungen aus einem Satz von Unterschlüsseln abruft, werden zahlreiche redundante sicherheitsüberprüfungen durchgeführt.When an application saves or retrieves a large number of registry settings from a set of subkeys, numerous redundant security checks are performed. Diese Enumeration gibt an, wann sicherheitsüberprüfungen für einen Schlüssel, die ausgelassen werden.This enumeration specifies when security checks on a key are to be omitted.

Die folgende Tabelle zeigt, wenn sicherheitsüberprüfungen durchgeführt werden, basierend auf dem Weg, die der übergeordnete Schlüssel und der aktuelle Schlüssel geöffnet werden.The following table shows when security checks are performed, based on the way the parent key and the current key are opened.

Übergeordnete Schlüssel mit geöffnet.Parent key opened with Aktuelle Schlüssel mit geöffnet.Current key opened with ErgebnisResult
StandardDefault StandardDefault Eine sicherheitsüberprüfung erfolgt bei jedem Wert in den aktuellen Schlüssel zugreifen, oder beim Versuch, einen Unterschlüssel zugreifen.A security check is performed when accessing any value in the current key, or when attempting to access a subkey. Dies ist das Verhalten in .NET Framework, Version 1.0 und 1.1.This is the behavior in the .NET Framework versions 1.0 and 1.1.
StandardDefault ReadSubTreeReadSubTree Beim Versuch, den aktuellen Schlüssel zu öffnen, wird eine sicherheitsüberprüfung ausgeführt.A security check is performed when trying to open the current key.
StandardDefault ReadWriteSubTreeReadWriteSubTree Beim Versuch, den aktuellen Schlüssel zu öffnen, wird eine sicherheitsüberprüfung ausgeführt.A security check is performed when trying to open the current key.
ReadSubTreeReadSubTree Standardinstanz oder ReadSubTreeDefault or ReadSubTree Beim Öffnen des aktuellen Schlüssels oder dessen Werte, werden keine sicherheitsüberprüfungen ausgeführt.No security checks are performed when opening the current key or its values.
ReadSubTreeReadSubTree ReadWriteSubTreeReadWriteSubTree Beim Versuch, den aktuellen Schlüssel zu öffnen, wird eine sicherheitsüberprüfung ausgeführt.A security check is performed when trying to open the current key.
ReadWriteSubTreeReadWriteSubTree BeliebigAny Beim Öffnen des aktuellen Schlüssels oder dessen Werte, werden keine sicherheitsüberprüfungen ausgeführt.No security checks are performed when opening the current key or its values.

Gilt für: