RegistryKey.OpenSubKey メソッド

定義

指定したサブキーを取得します。Retrieves the specified subkey.

オーバーロード

OpenSubKey(String, Boolean)

指定したサブキーを取得します。また、キーに書き込みアクセスを適用するかどうかを指定します。Retrieves a specified subkey, and specifies whether write access is to be applied to the key.

OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)

指定したアクセス権を要求して、指定したサブキーを読み取りアクセスまたは読み取り/書き込みアクセス用に取得します。Retrieves the specified subkey for read or read/write access, requesting the specified access rights.

OpenSubKey(String, RegistryRights)

指定された名前とアクセス権を持つサブキーを取得します。Retrieves a subkey with the specified name and access rights. .NET Framework 4.6 以降で使用できます。Available starting with .NET Framework 4.6.

OpenSubKey(String)

サブキーを読み取り専用で取得します。Retrieves a subkey as read-only.

OpenSubKey(String, RegistryKeyPermissionCheck)

指定したサブキーを読み取りアクセスまたは読み取り/書き込みアクセス用に取得します。Retrieves the specified subkey for read or read/write access.

OpenSubKey(String, Boolean)

指定したサブキーを取得します。また、キーに書き込みアクセスを適用するかどうかを指定します。Retrieves a specified subkey, and specifies whether write access is to be applied to the key.

public:
 Microsoft::Win32::RegistryKey ^ OpenSubKey(System::String ^ name, bool writable);
public Microsoft.Win32.RegistryKey OpenSubKey (string name, bool writable);
member this.OpenSubKey : string * bool -> Microsoft.Win32.RegistryKey
Public Function OpenSubKey (name As String, writable As Boolean) As RegistryKey

パラメーター

name
String

開くサブキーの名前またはパス。Name or path of the subkey to open.

writable
Boolean

キーへの書き込みアクセスが必要な場合には true に設定してください。Set to true if you need write access to the key.

戻り値

要求されたサブキー。操作が失敗した場合は nullThe subkey requested, or null if the operation failed.

例外

namenull です。name is null.

RegistryKey が閉じています。閉じられたキーにはアクセスできません。The RegistryKey is closed (closed keys cannot be accessed).

ユーザーに、指定したモードでのレジストリ キーへのアクセスに必要なアクセス許可がありません。The user does not have the permissions required to access the registry key in the specified mode.

次のコード例では、テストキーを作成OpenSubKeyし、メソッドを使用してそれを開き、メソッドの両方のオーバーロードを示します。The following code example creates a test key and uses the OpenSubKey method to open it, demonstrating both overloads of the method.

#using <Microsoft.VisualBasic.dll>

using namespace System;
using namespace Microsoft::Win32;
using namespace Microsoft::VisualBasic;

int main()
{
    // Delete and recreate the test key.
    Registry::CurrentUser->DeleteSubKey( L"RegistryOpenSubKeyExample", false );
    RegistryKey ^ rk = Registry::CurrentUser->CreateSubKey( L"RegistryOpenSubKeyExample" );
    rk->Close();

    // Obtain an instance of RegistryKey for the CurrentUser registry
    // root.
    RegistryKey ^ rkCurrentUser = Registry::CurrentUser;

    // Obtain the test key (read-only) and display it.
    RegistryKey ^ rkTest = rkCurrentUser->OpenSubKey( L"RegistryOpenSubKeyExample" );
    Console::WriteLine( L"Test key: {0}", rkTest );
    rkTest->Close();
    rkCurrentUser->Close();

    // Obtain the test key in one step, using the CurrentUser registry
    // root.
    rkTest = Registry::CurrentUser->OpenSubKey( L"RegistryOpenSubKeyExample" );
    Console::WriteLine( L"Test key: {0}", rkTest );
    rkTest->Close();

    // Open the test key in read/write mode.
    rkTest = Registry::CurrentUser->OpenSubKey( L"RegistryOpenSubKeyExample", true );
    rkTest->SetValue( L"TestName", L"TestValue" );
    Console::WriteLine( L"Test value for TestName: {0}", rkTest->GetValue( L"TestName" ) );
    rkTest->Close();

    return 0;
} //Main
using System;
using Microsoft.Win32;
using Microsoft.VisualBasic;

public class Example
{
    public static void Main()
    {
        // Delete and recreate the test key.
        Registry.CurrentUser.DeleteSubKey("RegistryOpenSubKeyExample", false);
        RegistryKey rk = Registry.CurrentUser.CreateSubKey("RegistryOpenSubKeyExample");
        rk.Close();

        // Obtain an instance of RegistryKey for the CurrentUser registry 
        // root. 
        RegistryKey rkCurrentUser = Registry.CurrentUser;

        // Obtain the test key (read-only) and display it.
        RegistryKey rkTest = rkCurrentUser.OpenSubKey("RegistryOpenSubKeyExample");
        Console.WriteLine("Test key: {0}", rkTest);
        rkTest.Close();
        rkCurrentUser.Close();

        // Obtain the test key in one step, using the CurrentUser registry 
        // root.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample");
        Console.WriteLine("Test key: {0}", rkTest);
        rkTest.Close();

        // Open the test key in read/write mode.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample", true);
        rkTest.SetValue("TestName", "TestValue");
        Console.WriteLine("Test value for TestName: {0}", rkTest.GetValue("TestName"));
        rkTest.Close();
    } //Main
} //Example
Imports Microsoft.Win32

Public Class Example
    Public Shared Sub Main()
        ' Delete and recreate the test key.
        Registry.CurrentUser.DeleteSubKey("RegistryOpenSubKeyExample", False)
        Dim rk As RegistryKey = Registry.CurrentUser.CreateSubKey("RegistryOpenSubKeyExample")
        rk.Close

        ' Obtain an instance of RegistryKey for the CurrentUser registry 
        ' root. 
        Dim rkCurrentUser As RegistryKey = Registry.CurrentUser

        ' Obtain the test key (read-only) and display it.
        Dim rkTest As RegistryKey = rkCurrentUser.OpenSubKey("RegistryOpenSubKeyExample")
        Console.WriteLine("Test key: {0}", rkTest)
        rkTest.Close
        rkCurrentUser.Close

        ' Obtain the test key in one step, using the CurrentUser registry 
        ' root.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample")
        Console.WriteLine("Test key: {0}", rkTest)
        rkTest.Close

        ' Obtain the test key in read/write mode.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample", True)
        rkTest.SetValue("TestName", "TestValue")
        Console.WriteLine("Test value for TestName: {0}", rkTest.GetValue("TestName"))
        rkTest.Close
    End Sub
End Class

注釈

要求されたキーが存在しない場合、 nullこのメソッドは、例外をスローする代わりにを返します。If the requested key does not exist, this method returns null instead of throwing an exception.

writabletrueの場合、キーは読み取りと書き込みのために開かれます。それ以外の場合、キーは読み取り専用として開かれます。If writable is true, the key will be opened for reading and writing, otherwise, the key will be opened as read-only.

OpenSubKeyメソッドを使用するには、 RegistryKeyメソッドのインスタンスが必要です。In order to use the OpenSubKey method, you must have an instance of the RegistryKey method. RegistryKeyインスタンスを取得するには、 Registryクラスの静的メンバーの1つを使用します。To get an instance of RegistryKey, use one of the static members of the Registry class.

セキュリティ

RegistryPermission
指定したレジストリキーを読み取る機能。for the ability to read the specified registry key. 関連付けられた列挙型:ReadAssociated enumeration: Read

SecurityPermission
指定されたレジストリキーがリモートキーである場合にアクセスする権限。for the ability to access the specified registry key if it is a remote key. 関連付けられた列挙型:UnmanagedCodeAssociated enumeration: UnmanagedCode

こちらもご覧ください

OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)

指定したアクセス権を要求して、指定したサブキーを読み取りアクセスまたは読み取り/書き込みアクセス用に取得します。Retrieves the specified subkey for read or read/write access, requesting the specified access rights.

public:
 Microsoft::Win32::RegistryKey ^ OpenSubKey(System::String ^ name, Microsoft::Win32::RegistryKeyPermissionCheck permissionCheck, System::Security::AccessControl::RegistryRights rights);
[System.Runtime.InteropServices.ComVisible(false)]
public Microsoft.Win32.RegistryKey OpenSubKey (string name, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck, System.Security.AccessControl.RegistryRights rights);
member this.OpenSubKey : string * Microsoft.Win32.RegistryKeyPermissionCheck * System.Security.AccessControl.RegistryRights -> Microsoft.Win32.RegistryKey
Public Function OpenSubKey (name As String, permissionCheck As RegistryKeyPermissionCheck, rights As RegistryRights) As RegistryKey

パラメーター

name
String

作成または開くサブキーの名前またはパス。The name or path of the subkey to create or open.

permissionCheck
RegistryKeyPermissionCheck

キーが読み取りアクセスで開かれているか、それとも読み取り/書き込みアクセスで開かれているかを示す列挙値の 1 つ。One of the enumeration values that specifies whether the key is opened for read or read/write access.

rights
RegistryRights

必要なセキュリティ アクセスを表す列挙値のビットごとの組み合わせ。A bitwise combination of enumeration values that specifies the desired security access.

戻り値

要求されたサブキー。操作が失敗した場合は nullThe subkey requested, or null if the operation failed.

属性

例外

namenull ですname is null

permissionCheck に無効な値が含まれています。permissionCheck contains an invalid value.

RegistryKey が閉じています。閉じられたキーにはアクセスできません。The RegistryKey is closed (closed keys cannot be accessed).

rights に、無効なレジストリ権限の値が含まれています。rights includes invalid registry rights values.

- または --or- ユーザーに、要求されたアクセス許可がありません。The user does not have the requested permissions.

注釈

このメソッドは、例外をスローするのnullではなく、要求されたキーが存在しない場合はを返します。Rather than throwing an exception, this method returns null if the requested key does not exist.

permissionCheck RegistryKeyPermissionCheck.ReadWriteSubTree RegistryKeyPermissionCheck.ReadSubTree RegistryKeyPermissionCheck.Default permissionCheckの場合、キーは読み取りと書き込みのために開かれます。がまたはの場合、親キーがで開かれていない限り、読み取り用にキーが開かれます。 RegistryKeyPermissionCheck.ReadWriteSubTreeIf permissionCheck is RegistryKeyPermissionCheck.ReadWriteSubTree, the key is opened for reading and writing; if permissionCheck is RegistryKeyPermissionCheck.ReadSubTree or RegistryKeyPermissionCheck.Default, the key is opened for reading unless the parent key was opened with RegistryKeyPermissionCheck.ReadWriteSubTree.

permissionCheck指定されたアクセスは、にrights指定されたアクセスよりも優先されます。The access specified for permissionCheck takes precedence over the access specified for rights. たとえばRegistryKeyPermissionCheck.ReadSubTree 、for permissionCheckおよびRegistryRights.WriteKeyにを指定した場合、サブキーへの書き込みを試みると、例外がスローされます。 rightsFor example, if you specify RegistryKeyPermissionCheck.ReadSubTree for permissionCheck and RegistryRights.WriteKey for rights, an attempt to write to the subkey throws an exception.

OpenSubKeyメソッドを使用するには、 RegistryKeyクラスのインスタンスが必要です。In order to use the OpenSubKey method, you must have an instance of the RegistryKey class. RegistryKeyインスタンスを取得するには、 Registryクラスの静的メンバーの1つを使用します。To get an instance of RegistryKey, use one of the static members of the Registry class.

セキュリティ

RegistryPermission
指定したレジストリキーを読み取る機能。for the ability to read the specified registry key. 関連付けられた列挙型:ReadAssociated enumeration: Read

SecurityPermission
指定されたレジストリキーがリモートキーである場合にアクセスする権限。for the ability to access the specified registry key if it is a remote key. 関連付けられた列挙型:UnmanagedCodeAssociated enumeration: UnmanagedCode

こちらもご覧ください

OpenSubKey(String, RegistryRights)

指定された名前とアクセス権を持つサブキーを取得します。Retrieves a subkey with the specified name and access rights. .NET Framework 4.6 以降で使用できます。Available starting with .NET Framework 4.6.

public:
 Microsoft::Win32::RegistryKey ^ OpenSubKey(System::String ^ name, System::Security::AccessControl::RegistryRights rights);
[System.Runtime.InteropServices.ComVisible(false)]
public Microsoft.Win32.RegistryKey OpenSubKey (string name, System.Security.AccessControl.RegistryRights rights);
member this.OpenSubKey : string * System.Security.AccessControl.RegistryRights -> Microsoft.Win32.RegistryKey
Public Function OpenSubKey (name As String, rights As RegistryRights) As RegistryKey

パラメーター

name
String

作成または開くサブキーの名前またはパス。The name or path of the subkey to create or open.

rights
RegistryRights

レジストリ キーの権限。The rights for the registry key.

戻り値

要求されたサブキー。操作が失敗した場合は nullThe subkey requested, or null if the operation failed.

属性

例外

namenullです。name is null.

RegistryKey が閉じています。閉じられたキーにはアクセスできません。The RegistryKey is closed (closed keys cannot be accessed).

ユーザーに、指定したモードでのレジストリ キーへのアクセスに必要なアクセス許可がありません。The user does not have the permissions required to access the registry key in the specified mode.

注釈

他のメソッドやプロパティを使用して操作する前に、キーを開く必要があります。You must open a key before it can be manipulated with other methods and properties. キーを変更するには、書き込みアクセスを指定できるOpenSubKeyメソッドのオーバーロードを使用して、キーを開く必要があります。To modify a key, you must open it with an overload of the OpenSubKey method that allows you to specify write access.

OpenSubKey(String)

サブキーを読み取り専用で取得します。Retrieves a subkey as read-only.

public:
 Microsoft::Win32::RegistryKey ^ OpenSubKey(System::String ^ name);
public Microsoft.Win32.RegistryKey OpenSubKey (string name);
member this.OpenSubKey : string -> Microsoft.Win32.RegistryKey
Public Function OpenSubKey (name As String) As RegistryKey

パラメーター

name
String

読み取り専用で開くサブキーの名前またはパス。The name or path of the subkey to open as read-only.

戻り値

要求されたサブキー。操作が失敗した場合は nullThe subkey requested, or null if the operation failed.

例外

namenull ですname is null

RegistryKey が閉じています。閉じられたキーにはアクセスできません。The RegistryKey is closed (closed keys cannot be accessed).

ユーザーに、レジストリ キーの読み取りに必要なアクセス許可がありません。The user does not have the permissions required to read the registry key.

次のコード例では、テストキーを作成OpenSubKeyし、メソッドを使用してそれを開き、メソッドの両方のオーバーロードを示します。The following code example creates a test key and uses the OpenSubKey method to open it, demonstrating both overloads of the method.

#using <Microsoft.VisualBasic.dll>

using namespace System;
using namespace Microsoft::Win32;
using namespace Microsoft::VisualBasic;

int main()
{
    // Delete and recreate the test key.
    Registry::CurrentUser->DeleteSubKey( L"RegistryOpenSubKeyExample", false );
    RegistryKey ^ rk = Registry::CurrentUser->CreateSubKey( L"RegistryOpenSubKeyExample" );
    rk->Close();

    // Obtain an instance of RegistryKey for the CurrentUser registry
    // root.
    RegistryKey ^ rkCurrentUser = Registry::CurrentUser;

    // Obtain the test key (read-only) and display it.
    RegistryKey ^ rkTest = rkCurrentUser->OpenSubKey( L"RegistryOpenSubKeyExample" );
    Console::WriteLine( L"Test key: {0}", rkTest );
    rkTest->Close();
    rkCurrentUser->Close();

    // Obtain the test key in one step, using the CurrentUser registry
    // root.
    rkTest = Registry::CurrentUser->OpenSubKey( L"RegistryOpenSubKeyExample" );
    Console::WriteLine( L"Test key: {0}", rkTest );
    rkTest->Close();

    // Open the test key in read/write mode.
    rkTest = Registry::CurrentUser->OpenSubKey( L"RegistryOpenSubKeyExample", true );
    rkTest->SetValue( L"TestName", L"TestValue" );
    Console::WriteLine( L"Test value for TestName: {0}", rkTest->GetValue( L"TestName" ) );
    rkTest->Close();

    return 0;
} //Main
using System;
using Microsoft.Win32;
using Microsoft.VisualBasic;

public class Example
{
    public static void Main()
    {
        // Delete and recreate the test key.
        Registry.CurrentUser.DeleteSubKey("RegistryOpenSubKeyExample", false);
        RegistryKey rk = Registry.CurrentUser.CreateSubKey("RegistryOpenSubKeyExample");
        rk.Close();

        // Obtain an instance of RegistryKey for the CurrentUser registry 
        // root. 
        RegistryKey rkCurrentUser = Registry.CurrentUser;

        // Obtain the test key (read-only) and display it.
        RegistryKey rkTest = rkCurrentUser.OpenSubKey("RegistryOpenSubKeyExample");
        Console.WriteLine("Test key: {0}", rkTest);
        rkTest.Close();
        rkCurrentUser.Close();

        // Obtain the test key in one step, using the CurrentUser registry 
        // root.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample");
        Console.WriteLine("Test key: {0}", rkTest);
        rkTest.Close();

        // Open the test key in read/write mode.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample", true);
        rkTest.SetValue("TestName", "TestValue");
        Console.WriteLine("Test value for TestName: {0}", rkTest.GetValue("TestName"));
        rkTest.Close();
    } //Main
} //Example
Imports Microsoft.Win32

Public Class Example
    Public Shared Sub Main()
        ' Delete and recreate the test key.
        Registry.CurrentUser.DeleteSubKey("RegistryOpenSubKeyExample", False)
        Dim rk As RegistryKey = Registry.CurrentUser.CreateSubKey("RegistryOpenSubKeyExample")
        rk.Close

        ' Obtain an instance of RegistryKey for the CurrentUser registry 
        ' root. 
        Dim rkCurrentUser As RegistryKey = Registry.CurrentUser

        ' Obtain the test key (read-only) and display it.
        Dim rkTest As RegistryKey = rkCurrentUser.OpenSubKey("RegistryOpenSubKeyExample")
        Console.WriteLine("Test key: {0}", rkTest)
        rkTest.Close
        rkCurrentUser.Close

        ' Obtain the test key in one step, using the CurrentUser registry 
        ' root.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample")
        Console.WriteLine("Test key: {0}", rkTest)
        rkTest.Close

        ' Obtain the test key in read/write mode.
        rkTest = Registry.CurrentUser.OpenSubKey("RegistryOpenSubKeyExample", True)
        rkTest.SetValue("TestName", "TestValue")
        Console.WriteLine("Test value for TestName: {0}", rkTest.GetValue("TestName"))
        rkTest.Close
    End Sub
End Class

注釈

他のメソッドやプロパティを使用して操作する前に、キーを開く必要があります。You must open a key before it can be manipulated with other methods and properties. キーを変更するには、 OpenSubKey OpenSubKey(String, RegistryKeyPermissionCheck)オーバーロードやOpenSubKey(String, Boolean)オーバーロードなどの書き込みアクセスを指定できるメソッドのオーバーロードを使用して、キーを開く必要があります。To modify a key, you must open it with an overload of the OpenSubKey method that allows you to specify write access, such as the OpenSubKey(String, RegistryKeyPermissionCheck) overload or the OpenSubKey(String, Boolean) overload.

指定したサブキーが見つからない場合nullは、が返されます。If the specified subkey cannot be found, then null is returned.

OpenSubKeyメソッドを使用するには、のRegistryKeyインスタンスが必要です。In order to use the OpenSubKey method, you must have an instance of RegistryKey. RegistryKeyインスタンスを取得するには、 Registryクラスの静的メンバーの1つを使用します。To get an instance of RegistryKey, use the one of the static members of the Registry class.

セキュリティ

RegistryPermission
指定したレジストリキーを読み取る機能。for the ability to read the specified registry key. 関連付けられた列挙型:ReadAssociated enumeration: Read

SecurityPermission
指定されたレジストリキーがリモートキーである場合にアクセスする権限。for the ability to access the specified registry key if it is a remote key. 関連付けられた列挙型:UnmanagedCodeAssociated enumeration: UnmanagedCode

こちらもご覧ください

OpenSubKey(String, RegistryKeyPermissionCheck)

指定したサブキーを読み取りアクセスまたは読み取り/書き込みアクセス用に取得します。Retrieves the specified subkey for read or read/write access.

public:
 Microsoft::Win32::RegistryKey ^ OpenSubKey(System::String ^ name, Microsoft::Win32::RegistryKeyPermissionCheck permissionCheck);
[System.Runtime.InteropServices.ComVisible(false)]
public Microsoft.Win32.RegistryKey OpenSubKey (string name, Microsoft.Win32.RegistryKeyPermissionCheck permissionCheck);
member this.OpenSubKey : string * Microsoft.Win32.RegistryKeyPermissionCheck -> Microsoft.Win32.RegistryKey
Public Function OpenSubKey (name As String, permissionCheck As RegistryKeyPermissionCheck) As RegistryKey

パラメーター

name
String

作成または開くサブキーの名前またはパス。The name or path of the subkey to create or open.

permissionCheck
RegistryKeyPermissionCheck

キーが読み取りアクセスで開かれているか、それとも読み取り/書き込みアクセスで開かれているかを示す列挙値の 1 つ。One of the enumeration values that specifies whether the key is opened for read or read/write access.

戻り値

要求されたサブキー。操作が失敗した場合は nullThe subkey requested, or null if the operation failed.

属性

例外

namenull ですname is null

permissionCheck に無効な値が含まれています。permissionCheck contains an invalid value.

RegistryKey が閉じています。閉じられたキーにはアクセスできません。The RegistryKey is closed (closed keys cannot be accessed).

ユーザーに、レジストリ キーの読み取りに必要なアクセス許可がありません。The user does not have the permissions required to read the registry key.

次のコード例では、100のキーと値のペアを含むサブキーを作成して閉じます。The following code example creates a subkey containing 100 key/value pairs and closes it. この例では、をDefault使用してサブキーを開き、すべての値の読み取りにかかる時間を記録して、サブキーを閉じます。The example opens the subkey with Default, records the time it takes to read all the values, and closes the subkey. この例では、をReadSubTree使用してサブキーを開き、すべての値の読み取りにかかる時間を記録します。The example opens the subkey with ReadSubTree and records the time it takes to read all the values. 最後に、この例では、改善率を計算して表示します。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 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.
' 

注釈

このメソッドは、例外をスローするのnullではなく、要求されたキーが存在しない場合はを返します。Rather than throwing an exception, this method returns null if the requested key does not exist.

permissionCheck RegistryKeyPermissionCheck.ReadWriteSubTree RegistryKeyPermissionCheck.ReadSubTree RegistryKeyPermissionCheck.Default permissionCheckの場合、キーは読み取りと書き込みのために開かれます。がまたはの場合、親キーがで開かれていない限り、読み取り用にキーが開かれます。 RegistryKeyPermissionCheck.ReadWriteSubTreeIf permissionCheck is RegistryKeyPermissionCheck.ReadWriteSubTree, the key is opened for reading and writing; if permissionCheck is RegistryKeyPermissionCheck.ReadSubTree or RegistryKeyPermissionCheck.Default, the key is opened for reading unless the parent key was opened with RegistryKeyPermissionCheck.ReadWriteSubTree.

OpenSubKeyメソッドを使用するには、 RegistryKeyクラスのインスタンスが必要です。In order to use the OpenSubKey method, you must have an instance of the RegistryKey class. RegistryKeyインスタンスを取得するには、 Registryクラスの静的メンバーの1つを使用します。To get an instance of RegistryKey, use one of the static members of the Registry class.

セキュリティ

RegistryPermission
指定したレジストリキーを読み取る機能。for the ability to read the specified registry key. 関連付けられた列挙型:ReadAssociated enumeration: Read

SecurityPermission
指定されたレジストリキーがリモートキーである場合にアクセスする権限。for the ability to access the specified registry key if it is a remote key. 関連付けられた列挙型:UnmanagedCodeAssociated enumeration: UnmanagedCode

こちらもご覧ください

適用対象