RegistryKeyPermissionCheck 열거형
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
레지스트리 키를 열고 이름/값 쌍에 액세스하는 경우 보안 검사가 수행되는지 여부를 지정합니다.
public enum class RegistryKeyPermissionCheck
public enum RegistryKeyPermissionCheck
type RegistryKeyPermissionCheck =
Public Enum RegistryKeyPermissionCheck
- 상속
필드
Default | 0 | 레지스트리 키가 부모의 모드를 상속합니다. 부모가 ReadSubTree 또는 ReadWriteSubTree 모드로 열리지 않았으면 보안 검사는 하위 키나 값에 액세스하려는 경우에 수행됩니다. |
ReadSubTree | 1 | 보안 검사가 하위 키나 값에 액세스하는 경우에 수행되지 않습니다. 부모가 ReadSubTree 또는 ReadWriteSubTree로 열리지 않았으면 보안 검사는 현재 키를 열려는 경우에 수행됩니다. |
ReadWriteSubTree | 2 | 보안 검사가 하위 키나 값에 액세스하는 경우에 수행되지 않습니다. 부모가 ReadWriteSubTree로 열리지 않았으면 보안 검사는 현재 키를 열려는 경우에 수행됩니다. |
예제
다음 코드 예제에서는 100개의 키/값 쌍을 포함하는 하위 키를 만들고 닫습니다. 이 예제에서는 Default를 사용하여 하위 키를 열고 모든 값을 읽는 데 걸리는 시간을 기록합니다. 그런 다음, ReadSubTree를 사용하여 하위 키를 열고 모든 값을 읽는 데 걸리는 시간을 기록합니다. 마지막으로 이 예제에서는 백분율 향상을 계산하고 표시합니다.
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.
'
설명
애플리케이션 저장 하거나 하위 집합에서 많은 수의 레지스트리 설정 검색, 다양 한 중복 보안 검사가 수행 됩니다. 이 열거형은 키에 대한 보안 검사를 생략할 시기를 지정합니다.
다음 표에서는 부모 키와 현재 키를 여는 방법에 따라 보안 검사가 수행되는 시기를 보여 둡니다.
을 사용하여 열린 부모 키 | 현재 키를 엽니다. | 결과 |
---|---|---|
기본값 | 기본값 | 보안 검사 현재 키의 값에 액세스하거나 하위 키에 액세스하려고 할 때 수행됩니다. 이는 .NET Framework 버전 1.0 및 1.1의 동작입니다. |
기본값 | ReadSubTree | 보안 검사 현재 키를 열려고 할 때 수행됩니다. |
기본값 | ReadWriteSubTree | 보안 검사 현재 키를 열려고 할 때 수행됩니다. |
ReadSubTree | 기본값 또는 ReadSubTree | 현재 키 또는 해당 값을 열 때 보안 검사가 수행되지 않습니다. |
ReadSubTree | ReadWriteSubTree | 보안 검사 현재 키를 열려고 할 때 수행됩니다. |
ReadWriteSubTree | 모두 | 현재 키 또는 해당 값을 열 때 보안 검사가 수행되지 않습니다. |
적용 대상
.NET