RegistryKeyPermissionCheck Sabit listesi
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
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. |