Aracılığıyla paylaş


RegistryKeyPermissionCheck Sabit listesi

Tanım

Kayıt defteri anahtarları açılırken ve ad/değer çiftlerine erişilirken güvenlik denetimlerinin gerçekleştirilip gerçekleştirilmeyeceğini belirtir.

public enum class RegistryKeyPermissionCheck
public enum RegistryKeyPermissionCheck
type RegistryKeyPermissionCheck = 
Public Enum RegistryKeyPermissionCheck
Devralma
RegistryKeyPermissionCheck

Alanlar

Default 0

Kayıt defteri anahtarı, üst öğesinin modunu devralır. Üst anahtar veya modla ReadSubTreeReadWriteSubTree açılmadığı sürece alt anahtarlara veya değerlere erişmeye çalışılırken güvenlik denetimleri gerçekleştirilir.

ReadSubTree 1

Alt anahtarlara veya değerlere erişilirken güvenlik denetimleri gerçekleştirilmez. Üst öğe veya ReadWriteSubTreeile ReadSubTree açılmadığı sürece geçerli anahtar açılmaya çalışılırken bir güvenlik denetimi gerçekleştirilir.

ReadWriteSubTree 2

Alt anahtarlara veya değerlere erişilirken güvenlik denetimleri gerçekleştirilmez. Üst anahtarı ile ReadWriteSubTreeaçılmadığı sürece geçerli anahtar açılmaya çalışılırken bir güvenlik denetimi gerçekleştirilir.

Örnekler

Aşağıdaki kod örneği 100 anahtar/değer çifti içeren bir alt anahtar oluşturur ve bunu kapatır. Örnek, Varsayılan ile alt anahtarı açar ve tüm değerleri okumak için gereken süreyi kaydeder. Daha sonra örnek ReadSubTree ile alt anahtarı açar ve tüm değerleri okumak için gereken süreyi kaydeder. Son olarak örnek, yüzde iyileştirmesini hesaplar ve görüntüler.

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.
'

Açıklamalar

Bir uygulama bir alt anahtar kümesinden çok sayıda kayıt defteri ayarı kaydettiğinde veya aldığında, çok sayıda yedekli güvenlik denetimi gerçekleştirilir. Bu numaralandırma, bir anahtardaki güvenlik denetimlerinin ne zaman atlanacaklarını belirtir.

Aşağıdaki tabloda, üst anahtarın ve geçerli anahtarın açılma şekline bağlı olarak güvenlik denetimlerinin ne zaman gerçekleştirildiği gösterilmektedir.

Ile açılan üst anahtar Ile açılan geçerli anahtar Sonuç
Varsayılan Varsayılan Geçerli anahtardaki herhangi bir değere erişilirken veya bir alt anahtara erişmeye çalışılırken bir güvenlik denetimi gerçekleştirilir. Bu, .NET Framework 1.0 ve 1.1 sürümlerindeki davranıştır.
Default Readsubtree Geçerli anahtar açılmaya çalışılırken bir güvenlik denetimi gerçekleştirilir.
Default ReadWriteSubTree Geçerli anahtar açılmaya çalışılırken bir güvenlik denetimi gerçekleştirilir.
Readsubtree Varsayılan veya ReadSubTree Geçerli anahtar veya değerleri açılırken hiçbir güvenlik denetimi yapılmaz.
Readsubtree ReadWriteSubTree Geçerli anahtar açılmaya çalışılırken bir güvenlik denetimi gerçekleştirilir.
ReadWriteSubTree Herhangi biri Geçerli anahtar veya değerleri açılırken hiçbir güvenlik denetimi yapılmaz.

Şunlara uygulanır