RegistryKeyPermissionCheck 列挙体
アセンブリ: mscorlib (mscorlib.dll 内)

Public Enumeration RegistryKeyPermissionCheck

メンバ名 | 説明 | |
---|---|---|
![]() | Default | レジストリ キーは親のモードを継承します。親が ReadSubTree モードまたは ReadWriteSubTree モードで開かれていない限り、サブキーまたは値にアクセスしようしたときにセキュリティ チェックが行われます。 |
![]() | ReadSubTree | サブキーまたは値にアクセスしようしたときにセキュリティ チェックは行われません。親が ReadSubTree または ReadWriteSubTree で開かれていない限り、現在のキーを開こうとしたときにセキュリティ チェックが行われます。 |
![]() | ReadWriteSubTree | サブキーまたは値にアクセスしようしたときにセキュリティ チェックは行われません。親が ReadWriteSubTree で開かれていない限り、現在のキーを開こうとしたときにセキュリティ チェックが行われます。 |

アプリケーションがサブキーのセットから多数のレジストリ設定の保存や取得を行う場合、多数の冗長なセキュリティ チェックが行われます。この列挙体は、キーに対するセキュリティ チェックをどのような場合に省略するかを指定します。
セキュリティ チェックを行うタイミングを次の表に示します。このタイミングは、親キーおよび現在のキーを開いた方法によって決まります。
セキュリティ チェックは、現在のキーの任意の値にアクセスするとき、またはサブキーにアクセスしようとしたときに行われます。これは、.NET Framework Version 1.0 および 1.1 での動作です。 | ||
ReadSubTree | セキュリティ チェックは、現在のキーを開こうとしたときに行われます。 | |
ReadSubTree | セキュリティ チェックは、現在のキーを開こうとしたときに行われます。 | |
ReadSubTree | Default または ReadSubTree | 現在のキーまたはその値を開くときに、セキュリティ チェックは行われません。 |
ReadSubTree | ReadWriteSubTree | セキュリティ チェックは、現在のキーを開こうとしたときに行われます。 |
ReadWriteSubTree | 現在のキーまたはその値を開くときに、セキュリティ チェックは行われません。 |

100 個のキー/値ペアを格納しているサブキーを作成し、これを閉じるコード例を次に示します。この例では、Default を使用してサブキーを開き、すべての値の読み取りに要する時間を記録します。次に、ReadSubTree を使用してサブキーを開き、すべての値の読み取りに要する時間を記録します。最後に、改善度を示すパーセント値を計算して表示します。
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. '
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. */

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- RegistryKeyPermissionCheck 列挙体のページへのリンク